Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TUTORIAL DE M ATLAB 1
1. ¿QUÉ ES M ATLAB? 4
1.1 Uso de Matri ces 5
1.2 Origen de MatLab 5
1.3 Plataformas 5
1.4 Productos 5
3. INICIANDO MATLAB 20
1
4. USO DE CO MANDO S 20
4.2 Instrucciones de MATLAB y Variables 22
4.3 Obt eniendo Información del Espaci o de Trabajo 23
4.4 Variabl es Permanentes 23
4.6 Saliendo y Guardando el Espacio de Trabajo 23
4.7 Manipulación de Vectores y Mat rices 24
4.8 Operaciones de Matrices 25
4.9 Operaciones de Arreglos 28
4.10 Ejemplos: Operaciones Arit méticas 29
COMANDO PLOT 60
Símbolo Color 60
Símbolo Estilo de línea 61
5.10.6 Comandos gráfi cos 63
5.11 Gr áficos en 3 dimensi ones 66
5.12 Ar chivos de disco 73
5.12.1 Manipul ación de Archivos de Disco 73
5.12.2 Ejecut ando Programas Externos 73
5.12.3 I mportando y Exportando Datos 73
5.13 INDICE ALFAB ETICO 74
6. SIM ULINK 75
6.1 Acel erador de Si mulink 77
6.2 Generador de código-C en Si mulink 77
7. COMANDOS DE MATLAB 78
7.1 General purpose commands: 78
Control System Toolbox Commands: 81
2
8. APLICANDO M ATLAB AL CONTRO L D E PROCESOS 86
8.1 Respuesta en el dominio del tiempo 86
8.2 Respuesta en el dominio de l a frecuencia 91
8.3 Lugar de l as raí ces 95
8.4 Controladores PID 97
3
1. ¿QUÉ ES MATLAB?
MatLab es un program a inter activo par a com putación numérica y visualización de
dato s. Es ampliam ente usado por Ingenier os de Control en el análisi s y diseño,
posee adem ás una extraordinaria ver satili dad y capacidad para r esolver
problemas en m atemática aplicad a, física, química, ingeni ería, finanzas y muchas
otras aplicaciones. Está basado en un sofisti cado softwar e d e matri ces par a el
análisis de sistem as de ecuaci ones. Per mite resolver com pli cados problem as
num éricos si n nec esid ad d e escribir un prog rama.
MATLAB es un entorno de computación y d esarrollo de aplicaci ones totalmente
integrado orientado para ll evar a cabo proyectos en donde se encuentr en
implicados el evado s cálculos m atemáticos y la visualización gráfica de los
mismos.
MATLAB integr a análisis num éri co, cálculo matricial, proc eso de señal y
visualizaci ón gr áfica en un entorno completo donde los problem as y sus
soluciones son ex presado s del mismo modo en que se escribi rí an
tradicionalm ente, si n nec esidad d e h acer uso de la program ación tradicional.
El nombr e de MATLAB pro viene de la contr acción de los térm inos MATrix
LABoratory y fue ini ci alm ente concebido para proporcionar fácil acceso a las
librerías LINPAC K y EISPAC K, las cuales representan hoy en dia dos de las
librerías más i mportantes en computación y cálculo matricial.
4
MATLAB dispone tam bién en l a actualidad de un am plio abani co de progr amas de
apo yo especializados, denom inados Toolboxes, que extienden sig nifi cativamente
el núm ero de funciones i ncorporadas en el progr ama pri ncipal. Esto s Toolboxes
cubr en en la ac tuali dad prácticamente c asi todas las áreas pri ncipales en el
mundo d e la ingenierí a y la simul ación, destacando entre ellos el 'toolbox' de
proceso de imágenes, señal , control robusto, estadística, análisis financi ero,
matemáticas sim bóli cas, r ed es neurales, lógica difusa, identificación de
sistemas, simulación de sistemas dinámicos, etc.
Adem ás también se dispone del pro gram a Simulink que es un entor no gráfi co
inter activo con el que se pued e analizar, modelizar y simular la dinámica de
sistemas no li neales.
1.3 Plataformas
MatLab está dispo nible para una amplio número de plataform as: estaciones de
trabajo SUN , Apollo, VAXstation y HP, VAX, MicroVAX, Gould, Appl e M aci nto sh
y PC AT compatibles 80386 o superiores. O pera bajo si stemas oper ativos
UNIX, Macintosh y Windows.
1.4 Productos
La empresa M ath Wo rks ofr ece MatLab como su principal producto para
computación numérica, análisis y visualizaci ón de d atos. Tambi én ofrece Si muli nk
5
como un anexo a MatLab y que inter actua con él en leng uaj e de MatL ab y
lenguaje de bajo nivel C. Simulink es usado para simulaci ón modelado no lineal
avanzado. Se ofr ecen además num erosas h er ramientas especial es en "Toolbox es"
para r esolver problemas de aplicaci ones especí ficas, por ejemplo control,
procesamiento d e señales, r ed es neurales, etc. Estas h er ramientas son
colecciones de ruti nas escritas en MatLab.
6
2. Librería de Aplicaciones de MATLAB
• Algebra lineal.
7
• Matrices elem entales y mani pulación d e vectores.
• Matrices especiales.
• Estadística bási ca y análisi s de d ato s.
(Nota: Las funciones del tipo Handl e Graphics no están incluidas en la C M ath
Library).
En equipo s U NIX estas li brerias pueden ser igualmente obtenidas com o librerías
de tipo estático (static libraries) o bi en como librerías comparti das ( shared
libraries). Respecto al mundo PC, estas librerí as pueden obtenerse como DLL's
en el entor no Microsoft Wi ndow s o como librerias compartidas en equi po s Apple
MacInto sh.
8
2.2.3 Velocidad y Precisión
Los algoritmos utilizados en la MATLAB C Math Libr ar y han sido desarrollados
por un gr upo de r enom brado s ex pertos en pr ogram ación al gorítm ica d e funciones
de tipo m atem ático (algebra li neal y cálculo num éri co). Las funciones de álgebr a
lineal han sido obteni das d e las libreri as m undialm ente reconoci das L INPAC K y
EISPAC K. La MATLAB C Math Library contiene m ás de 300 funciones num éricas,
lógicas y de utilidad. Todas estas funciones le permitirán o per ar en datos de
tipo escalar, vectorial o matrici al con la misma facilidad sintáctica.
Polinomios e interpolación
Inter pol ación 1-D y 2-D.
Construcción polinomi al.
Diferenciación d e polinomios.
Evaluación de polinomios.
9
Métodos numéricos no lineales
Búsqueda de ceros en funciones de una única variable.
Deconvolución.
Magnitudes y áng ulos de fase.
Matrix tr aspuesta.
Oper adores lógi co s AND, O R, NOT y XOR.
2.2.5 Utilidades
Gestión y mantenimi ento d e error es.
2.2.6 Requerimientos
La libreria MATLAB C Math Library cumple con la norm ativa estánd ar ANSI
para compiladores C.
Finalmente, l a librería trabajará co n aquellos enlazadores que vienen
sumini strado s con la mayorí a d e compilador es ANSI C.
10
2.3 THE MATLAB COMPILER TOOLBOX
El nuevo compilador d e MATLAB -Th e MATLAB Compiler- permite cr ear código C
optimi zado procedente de ficheros M -M fi les- de MATLAB. Este compilador
puede ser utilizado d e dos modos:
Los fichero s MEX contienen códi go objeto que es dinámicamente enlazado como
'runtime' en el entor no MATLAB por el intérpr ete d el program a.
El proceso en c uesti ón se realiza en tres pasos:
11
del ti po 'stand-alo ne' r equieren par a ello de la MATLAB C Math Libr ar y.
Obsérvese que las funciones gráficas de MATLAB no están incl uidas.
Par a construir apli caciones 'stand-alone' se debería seguir lo s sig uientes paso s:
1. Utili zar el compilado r de MATLAB para c onvertir fi chero s M en C co n la
instr ucción exter na m cc -e.
• Tratar todas las variables en fichero s como dato s enteros y/o reales.
• Utili zar una variabl e concreta como variable escalar, vectorial, enter a, r eal o
una combinación de estas.
• Desac tivar el control de parám etro s de entr ada y el redimensionamiento
dinámico de vectores.
PC/Microsoft Windows
Metawar e High C/C ++ V.3.0 o superior.
12
MPW MrC V.1.0b2 o PPCC version 1. 0.5
680x 0 MacIntosh
MPW C Versión 3.4
UNIX y VMS
Existen dos ver si ones del mi smo Toolbox. The Basic Symbolic Math Toolbox es
una colecci ón de más de 50 funciones MATLAB las cuales perm iten acced er al
13
ker nel d e MAPLE utilizando la Sintaxi s y el estilo del lenguaje MATLAB. The
Extend ed S ymbolic Math Toolbo x aum enta esta funci onalidad i nc luyendo todas
las c ar acterísticas de progr amación d e M APLE, y el acceso a los paquetes de
funciones de más de veinte campos de l as m atemáticas especi ales apli cadas.
Es posible utili zar este Toolbox sin conocimi ento pr evios d e MAPLE, ya que los
ficheros co ntenidos en él son to talm ente autónomo s. Sin embarg o, si lo que se
desea es obtener toda la potenci a de cálculo del entor no, será necesario un
amplio conocimiento d el manejo y la progr amación de MAPL E
Asimismo, po see func iones par a l a resoluc ión de algunos tipos de problem as
matri ciales en extr emos.
Resulta conveniente par a una comprensión y mejor m anejo d e la toolbox poseer
conoci mientos básicos previos de análisis de funciones r eal es, m atri ces y teoría
de extr emos.
Algunas d e las áreas básicas que cubre este tool box para MATLAB son las
siguientes:
14
2.6 IMAGE PROCESSING TOOLBOX
• Proceso de bloques
15
2.7 Neural Network Toolbox
Este toolbox pro porciona funciones para el diseño, ini ci ali zación, simulación y
entr enamiento de lo s modelos neuronales d e uso m ás extendido en la actualidad:
Perc eptrón, redes li neales, r edes de retr opropag ación, r edes de base radial,
aprendizaj e asociati vo y competi ti vo, aplicaciones autoorganizati vas,
aprendizaj e de c uanti zación vectorial, red es de Elman y redes de Hopfield.
Mediante la inclusión de un ampli o abanico de funci ones y procedimi entos
escritos para MATLAB, el usuario pued e mediante el Neural Networ k Toolbox
efectuar el di seño de arquitec tur as com plejas, combi nando lo s modelos que ya
estan pro porcionados por defecto en el toolbox. Asim ism o, el usuario puede
definir sus pro pi as funciones de tr ansfer encia e ini ciali zaci ón, r eglas de
aprendizaj e, funciones de entrenamiento y estim ación de erro r para usarlas
posteriormente co n las funciones básic as.
El toolbox, apor ta las facilidades y prestaciones gr áficas de MATLAB par a el
estudi o del compor tamiento de las r edes: visualización gráfica de la m atri z de
peso s y vector de desplazami ento mediante diagram as de Hinto n, representaci ón
de error es a lo larg o del entrenam iento, mapas de superfi cie d e error en
función de peso s y vector de desplazam iento, etc. Estos gr áficos resultan m uy
útiles en el estudio de la converg encia y estabilidad de lo s algoritmo s de
aprendizaj e. Este too lbox incluye un m anual de i ntroducción al campo de las
red es neuronales junto con una colección de demostraciones y aplicaciones muy
didácti cas, útil es para el estudio y la profundización en las cuestiones
fundam entales d e los par adigmas de r ed es neuro nales básicos. Asimismo, se
proporcionan las referencias bi bliográficas más significativas r eferi das a los
distinto s modelo s que apar ec en en la aplicaci ón.
A pesar de que el estudio de las r edes neuronales se ini ció ya hace al gunas
decadas, las prim er as aplicaciones sólidas dentro de este cam po no han tenido
lugar hasta hace unos doce años y aun ahor a co nstituyen un ár ea de
investigación en rápido desarrollo. Este toolbox tiene por tanto una ori entaci ón
difer ente a aquellos destinados a campos como el de sistem as de control u
optimi zación do nde la terminologí a, fundam entos matem áticos y procedimi entos
de diseño estan ya firmemente establ ecidos y se han aplicado dur ante año s.
Este toolbox pr etend e que sea utilizado para la valoración y diseño de di seños
neuronales en la industria y sobre todo en educación e i nvestig ación.
16
Dentro de las aplicaci ones bási cas de este toolbox, c abe d estacar aquellas que
están ori entadas a aquell as que se enm arc an dentro del campo de la industri a
aeroespacial y automoción (si mulación, sistemas de control, autopi lotaje), banc a,
defensa (reco nocimiento de patrones, proc esamiento de señales, identi ficaci ón
de imág enes, extr acción de car acterísticas, compresión d e d ato s), electró ni ca
(control de proc esos, análi si s de errores, modelado no li neal, sí ntesi s de vo z,
visión por ordenado r), economí a (análisis fi nanciero, análisi s predictivo),
industri a (control de proc eso s, identi fi cación en tiempo real, sistem as de
inspección), medici na, robótica (control de trayectorias, sistem as de vi sión),
reconocimiento y síntesis d el habla, telecomunicaciones (control de datos e
imágenes, servicios de información auto matizada, trad ucción del lenguaje
hablado en tiempo r eal, diagnosis, sistemas d e enrutamiento), etc. El toolbox
contiene muchos ej emplos de algunas de estas aplicaciones.
Los resultados ahora son de elevad a calid ad, controladores más robusto s y un
ciclo de di seño m ucho más rápido.
El toolbox NCD ex tiende, además, las pr estaciones que incor por a S IMULINK, el
entorno de desarrollo de diagram as d e bloques par a la modelació n y análisis de
sistemas di námicos de The M ath Wor ks, Inc. El usuario puede incluir uno o m ás
bloques NCD en el sistem a y describi r posteriormente de mo do totalm ente
gráfico las restricciones, toler ancias y límites d e permisivid ad de cada uno de
estos blo ques. Los métodos avanzado s d e optimización y la si mulación del
proceso son posterior mente anali zados y aj ustados medi ante l a inclusi ón de unas
ciertas variabl es d e contor no par a pod er obtener los tiempos de r espuesta
deseados. Este toolbox puede ser utili zado para ajustar una am pli a vari ed ad de
controladores que se utilicen en un sistem a, destacando los controlador es PID,
LQR, LQG y estructuras H infinito. El diseñador d e sistem as pued e utilizar el
método de Mo ntecarlo par a el diseño y análisis de controladores robustos,
17
siempr e que se detecten determinadas variaci ones en los co mponentes del
sistema.
Por ejem plo, podr án utilizar se toolbox es para el análisis de si stemas lineal es
para el di seño inicial; posteriormente, podr án utilizarse modelos no lineales m ás
sofistic ados utilizand o SIMULINK.
Además, pued e invoc ar se NCD para un m ejor ajuste param étr ico y par a la
optimi zación d e los controladores. Este toolbox se encuentr a actualmente
disponi ble para una amplia vari ed ad de plataform as informáti cas, destacando
ordenador es per sonales tipo PC o Apple MacIntosh , numerosas estaciones UNIX
y ordenador es Digital VAX VMS.
• Cero s d e polinomios
18
• Suma de series.
• Cuadratur as.
• Ecuaciones difer enciales ordi nari as.
19
3. INICIANDO MATLAB
Después d e ej ecutar el program a MatLab d esde el si stem a oper ati vo empleado,
por ejem plo h aciend o doble click sobre el icono d e MatLab en am bi entes
Windows, aparec e el indi cador de comandos el cual está listo para recibir
instr ucciones en lenguaje MatLab. Este indicador es d e la sigui ente forma:
>>
Al ini ciar el uso de MatL ab están disponibles dos com ando s de ayuda y
demostración. Par a ej ecutarlo s se escri be el comando en la línea de comandos
después del símbolo >> y se presiona la tecla Enter. Por ej emplo:
>>help
permite obtener una ayuda sobre los di fer entes com andos de MatLab.
>>demo
hac e una demo str ación de las di ferentes aplicaciones de MatL ab.
Par a c err ar o finalizar el uso de MatLab se usa el comando quit.
>>quit
4. USO DE COMANDOS
La primer a form a de interac tuar con MatL ab es a través de la línea de
comando s. Puede ejec utarse un comando si este está escrito después del símbolo
>> y se pr esiona la tecla Enter.
MATLAB trabaj a esenci almente con matrices numéricas r ectang ular es. La
maner a m ás fácil de entr ar matri ces pequeñas es enum er ando los elem entos de
ésta de tal m aner a que:
Ejemplo:
A = [ 1 2 3; 4 5 6; 7 8 9 ]
resultaría en la m atri z
A =
1 2 3
4 5 6
7 8 9
MATLAB guarda esta matriz par a utilizarla luego bajo el nombr e de A.
20
A = [1 2 3
4 5 6
7 8 9]
Ya que MatL ab se basa en el álg ebra de matrices como ejem plo crear emos una
matri z. Estas pued en estar form adas por un sólo elem entos (escalar), por una
fila o una colum na (vector) o por una serie de filas y columnas (matri z
propiam ente dicha).
>>A=1
define A como un escalar de valor 1. Al definir A autom áticamente MatL ab
presenta en pantalla su valor.
A =
1
Par a no presentar el valor d e l a variable c reada, d ebe agregarse punto y coma
(;) al final del comand o.
Par a defi nir una m atr iz se deben separ ar las filas co n punto y coma (;) o con
retor no (Enter).
>>A=[ 1 2 3; 4 5 6]
o
>>A=[ 1 2 3
4 5 6]
ambo s comandos producen el mismo efecto:
A =
1 2 3
4 5 6
21
4.1 Elementos de matrices
Los elem entos d e una matriz pueden ser cualquier expresión d e MATLAB.
Ejemplo:
x = [ -1.3,sqrt(3),(1+2+3) *4/5]
resultaría en
x =
Par a añadir otr a fila a la matriz A de arriba podemo s hacer lo sig uiente:
r = [10 11 12];
A = [ A; r]
y resultaría
A =
1 2 3
4 5 6
7 8 9
10 11 12
22
4.3 Obteniendo Información del Espacio de Trabajo
Los ejem plos que hemos dado se han guardado en vari ables que están en el
espaci o de trabajo de MATLAB. Par a listar las vari ables en el espacio de
trabajo se utiliza el comando who. Para ver inform aci ón adici onal acerca de
estas variables se utiliza el comando whos.
4.5 Funciones
Las funciones que utiliza MATLAB son intrí nsecas al procesador de éste. Otras
funciones están dispo nibles en la librería externa d e archivo s-M. Además de
éstas funci ones todo usuario también pued e crear otr as funciones. Pued es
combinar l as funciones de acuerdo a tu nec esid ad.
Ejemplo:
x = sqrt(log(z))
Se puede uti lizar save y load con otros nom bres de archivos, ó para guardar solo
vari ables seleccionadas
Ejemplo:
save temp X Y Z
Este ej emplo guarda las vari ables X, Y, Z en el archivo temp. mat. Usando el
com ando load temp las obtienes nuevam ente d el archivo temp.mat. l oad y save
tambi én pueden i mpor tar y expor tar inform ación de archivo s ASCII.
23
4.7 Manipulación de Vectores y Matrices
Generando Vectores
Los dos punto s, :, son im portantes en MATLAB. Por ejem plo
x = 1:5
genera un vector fila que conti ene lo s números entero s del 1 al 5:
x =
1 2 3 4 5
No necesariamente se ti ene que increm entar por números enter os, pued en ser
decimales, núm ero s negativo s ó constantes.
Índices
Podemos referi rnos a elem entos indi vi dual es de matri ces enc err ando sus í ndices
en par éntesis.
Ejemplo:
A =
1 2 3
4 5 6
7 8 9
Un índice puede ser un vector. Si x y v son vectores, ento nces x (v) es [x(v(1)),
x(v(2)), ...,x(v(n))]. Para matric es, lo s índi ces de vec tor es per miten acceso a
submatrices co ntiguas y no-contiguas.
24
Por ej emplo, suponga que A es una matriz 10 por 10. Ento nces
A(1:5, 3)
especifica l a subm atriz 5 x 1, ó vector columna, que consi ste d e lo s primeros
cinco elem entos en la tercer a columna d e A.
También
A(1:5, 7:10)
es la subm atriz 5 x 4 de las primer as cinco filas y las últimas cuatro columnas.
Utili zando solo los dos punto s denota todo lo correspo ndiente a la fila ó
columna. Podríamos tener una i nstrucción co mo:
A(: , [ 3 5 10]) = B(:, 1: 3)
que r eem pl aza la terc era, quinta y décima columna de A co n l as prim er as tr es
columnas de B.
Manipulación de Matrices
Las o per aciones sum a y resta tambi én está definid as si uno d e lo s operandos es
un escalar, es deci r, una m atri z 1 x 1.
Ejemplo:
x =
-1
0
2
25
y = x - 1
resultaría
y =
-2
-1
Ejemplo:
>>A=[ 1 2 3;4 5 6]; B=[ 6 5 4; 3 2 1];
define l as m atrices A y B. Par a sum arlas se escribe la oper ación:
>>A+B
El resultado de la operación es por d efecto almac enado en la vari able ans e
inmediatam ente pr esentado en pantalla:
ans =
7 7 7
7 7 7
Par a almacenar la sum a d e A y B en la variable C:
>>C=A+ B
C =
7 7 7
7 7 7
Multiplicando Matrices
La operación de multiplicación de matrices está d efinid a siempre que el núm ero
de columnas de la primera m atri z sea igual a el número de filas de la segunda
matri z.
Producto escalar
El produc to interior (producto escalar ó produc to punto) se consig ue de la
siguiente maner a:
x' * y
asumiendo que x y y son vector es colum nas. Note que y' * x pr oduce el mismo
resultado.
26
Producto de una matriz por un vector
El producto de una m atri z y un vector es un caso especi al del pr oducto matri z-
matri z y naturalm ente, un escalar como pi, puede multipli car, ó ser m ultiplicado
por, cualquier matriz.
Dividiendo Matrices
En división d e m atrices, si A es una matri z c uadr ad a no- sing ular, entonces A\B y
B/A corr espo nden a la multiplicación izqui erda y der echa de B po r el i nverso de
A, esto es, inv(A) * B y B * inv(A) respecti vam ente. El r esultado es obtenido
directam ente sin la co mputación d el inver so.
27
logarítmica. Estas operaciones especiales están definidas solamente para
matri ces cuadr adas.
det - determinante
trace - traza
Ejemplo:
x = [ 1 2 3]; y = [ 4 5 6];
z = x. * y
resulta
z =
4 10 18
Las expr esiones A./B y A.\B dan lo s cocientes d e los elem entos i ndividuales.
Ejemplo:
z = x.\ y
resulta
z =
4.0000 2.5000 2.0000
28
Exponentes con Arreglos
El símbolo .^ denota exponenciaci ón elem ento por elem ento.
Ejemplos:
>> 1/2
ans =
0.5000
>> 2\1
ans =
0.5000
>> b=[ 1; 2; 3]
b =
1
2
3
>> a'
ans =
2 1 2
>> b'
ans =
1 2 3
29
>> a*b
??? Error using ==> *
Inner matrix dimensions must agree.
>> a.*b
ans =
2
2
6
>> a*3
ans =
6
3
6
>> b.*3
ans =
3
6
9
30
>> a/3
ans =
0.6667
0.3333
0.6667
>> a./3
ans =
0.6667
0.3333
0.6667
>> a^b
??? Error using ==> ^
Matrix dimensions must agree.
>> a.^b
ans =
2
1
8
>> a^2
??? Error using ==> ^
Matrix must be square.
>> a.^2
ans =
4
1
4
>> 2^a
??? Error using ==> ^
Matrix must be square.
31
>> 2.^a
ans =
4
2
4
Formatos de salida :
4/3
a) format short
1.3333
b) format shor t e
1.3333e+00
c) format long
1.33333333333333
d) format long e
1.33333333333333e00
e) format bank
1.33
f) format hex
3ff5555555555555
32
5. PROGRAMANDO CON MATLAB
5.1 Generalidades
Progr amar en MatL ab es usar una seri e de com andos que permi tan realizar una
tarea o función especí fica. Estos pueden ser escri tos uno por uno a tr avés de la
línea de com ando s:
>>A=[ 1 2 3;4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>>A'
ans =
1 4 7
2 5 8
3 6 9
El primer comando A=[1 2 3;4 5 6;7 8 9] define la matriz A y el siguiente
comando A' c alcula y presenta en pantalla la tr anspuesta d e A.
Un arc hi vo-M consi ste de una secuencia d e instrucciones norm ales d e MATLAB,
que probablemente i ncluyen r efer encias a otros archivos-M. Un archivo-M se
puede llam ar a sí mismo recur sivam ente. Pued es crear archivos- M utili zando un
editor de texto ó procesador de pal abras.
Hay do s tipos de arc hivos-M: los d e com andos y las funciones. Los archivos de
comando s, automatizan secuencias larg as de comandos. Los archivos de
funciones, permiten añadir a MATLAB funci ones adicionales ex pandi endo asi la
capaci dad de este program a. Ambos, comandos y funci ones, son
archivosordinarios de tex to ASCII.
Archivos de Comandos
Cuando un archivo de comandos es invocad o, MATLAB simplem ente ejecuta los
comando s encontr ado s en dicho archivo. Las instr ucciones en un archivo de
comando o peran globalmente en lo s datos en el espacio de trabajo. Los comandos
son utili zado s par a hac er análisis, r esolver probl emas, ó diseñar secuencias
33
largas de comandos que se convier tan en inter activas. Por ejempl o, supo nga que
el archivo fi bo.m contiene los sigui entes com ando s de MATLAB:
Si escribimos fibo en una ventana de MATLAB seg ui do de "enter " vemo s que
MATLAB calcula lo s pri meros 16 núm eros de Fibo nacci, y luego grafic a esto s.
Luego que la ej ecuci ón del archivo es completad a, las vari ables f y i perm anec en
en el espacio de trabajo.
Archivos de Funciones
Un archivo-M que contiene la palabra functi on al principio de la primera línea, es
un archivo de función. En una función, a di fer encia d e un comand o, se d eben de
pasar los ar gum entos. Las variables d efinidas y m ani puladas dentr o de la funci ón
son local es a esta y no operan globalmente en el espaci o de trabajo. Los archivos
de funciones se utili zan para extender a M ATLAB, i.e., crear nuevas funciones
para MATLAB utili zando el leng uaj e propio de MATLAB.
El archivo mean.m contiene las instr ucciones:
function y = mean(x)
% Val or medio.
% Para vectores, m ean(x) retorna el val or medio de los elementos del vector x.
% Para matrices, mean(x) es un vector fil a conteniendo el valor medio de cada col umna.
[ m, n] = size(x);
if m == 1
m = n;
end
y = sum(x)/ m;
34
(Las lineas que com ienzan con "%" so n inter pretadas como com entarios por
MATLAB). La existencia de este archi vo en el disco duro define una nueva
función en MATLAB ll amad a mean. Si z es un vector de lo s enteros d esde 1 a 99,
por ej emplo,
z = 1:99;
entonc es, el valor promedio es encontr ado escribiendo
mean(z)
que resultaría
ans =
50
No es nec esario asig nar los enteros d e 1 al 99 en la variable x. Utili zamos mean
con una vari able llamada z.
Este vector que contení a los enteros de 1 a 99 fue pasado ó copiado a mean
donde se convirtió en una variable local llamad a x.
Ejemplo
% Ejemplo de un archivo-m
% Creación del vect or x usando el comando for
n=5;
for i=1:n
x(i)=i^2;
end
x
% Fin del archi vo-m
Este ej emplo es un archi vo-m ti po comando. Para ejecutarlo, en la línea de
comando s se d ebe esc ri bir el nombr e d el archi vo:
>>ejemplo
x =
1 4 9 16 25
35
Ejemplo
% Cal cula el promedio de los elementos de un vector y dibuja dicho vector
% Sintaxis: promedio(x) donde x es el vector a prom ediar
function p = promedio(x)
n=l ength(x) ;
p=0;
for i=1:n
p=p+x(i );
end
p=p/n;
plot(x);
36
Esta imagen es el resultado d el comando plot(x) al ejecutar la función prom edio.
MatLab posee un conjunto de archivos-m incorporado s (built-in). Puede
agr egár sele archivo s-m definidos por el usuari o alm acenando lo s mismos en el
directorio principal d e MatLab. Los comentari os i ncluidos en esto s scri pts y
funciones se visuali zan al usar el comando help seguido del nombre del archivo.
>>help promedio
Calcula el promedio de los el em entos de un vector y dibuj a di cho vect or
Sintaxis: promedio(x) donde x es el vect or a pr omediar
Par a ver el contenido de un archivo-m se usa el comando t ype seguido del nombre
del archivo.
sin - seno
cos - coseno
37
Ejemplo
size Regresa el núm ero de filas y columnas
A =
0 7 -6
1 0 0
0 1 0
>> [ m n]=size(A)
m =
3
n =
3
Funciones m atriciales
tri l(A) Matriz triang ular inferior
tri u(A) Matriz triangular superior
tocplitz Tocplitz
Ejemplo s
>> A =
0 7 -6
1 0 0
0 1 0
>> t oeplitz(A)
ans =
0 1 0 7 0 1 -6 0 0
1 0 1 0 7 0 1 -6 0
0 1 0 1 0 7 0 1 -6
38
Fac torización Ortogonal ó Factori zación Q R.
Se utiliza para m atrices cuadradas ó rectangulares. Esta factori zación se utili za
para resolver sistemas lineal es con más ecuaci ones que desc onocidas. Esta
factori zaci ón tambi én es la base par a las funciones nul l y orth, que g ener an
bases or tonorm ales para el espacio nulo y r ango d e una matriz r ec tang ular d ad a.
rank - rango
rcond - esti mado del número de condición
Funciones de Funciones
39
y = 1./((x-.3).^2 +.01) + 1./( (x-.9).^2 +.04) - 6;
y par a la gráfica d e la función escribimos
x = -1:.01:2;
plot(x, humps(x))
Note que el argum ento de quad contiene un nombr e d e una función. Por esto quad
se llama una funci ón de función, i.e., es una función que oper a en otras
funciones.
fmins - m íni mo de una función m ulti-vari able (mi nim ización no-lineal si n
restricciones)
Las funciones de MATLAB par a resol ver problem as de valo r i nicial para
ecuaci ones difer enciales ordi nari as so n:
ode23 - método Runge- Kutta de l argo d e paso variable que combina un método de
orden dos co n uno de orden tr es.
ode45 - m étodo Rung e-Kutta-Fehlberg de largo de paso vari able que combina un
método d e orden cuatro con uno de ord en cinco.
40
Ejemplo
to=0; tf=10;
[t,x]=ode23(`edif',to,tf ,xo);
[t,x]=ode23(`deriv',to,tf,xo);
ode45
[t,x]=ode23(`deriv',to,tf,xo,to1,trace);
ode45
trace => 0 - no resuntados intermedios
1 - resultados intermedi os
== igual a
=~ no igual a
41
Ejemplo:
if n< maxn
...
if n>=0, break, end
El resul tado de B = ~A es una m atri z cuyos el emento s son uno do nde A ti ene un
elem ento c ero, y c ero s donde A ti ene elem ento s difer entes de c ero.
La función all(x) devuelve 1 solam ente si todos los elemento s de x son di ferentes
de cero.
an y - condiciones lógicas
42
finite - verifi ca par a los valor es finitos
% Comentario
Ejemplos:
[ 6.0 9.0 3.4 ]
sqrt(2)
for i=1:n, a(i)=0, end
for i=1:n; a(i)=0; end
% inicia vector a en 0
43
5.5 Control de flujo
5.5.1 Declaración FOR simple
Si ntaxis
for variable=incio:paso:final
declaración 1;
...
declaración n;
end
Ejemplo:
for i=1:n
c(i)=a(i)*b(i);
end
o
for i=1:n; c(i)=a(i)*b(i ); end
El ciclo FOR permite que una i nstrucci ón, ó gr upo d e i nstr ucciones, pueda
repeti rse un número determinado de veces. Por ej emplo,
for i = 1:n, x(i) = 0, end
asigna 0 a lo s pri mer os n elem ento s de x. Si n es menor d e 1, el ciclo sig ue
siendo válido pero MATLAB no ejec uta la instr ucción i nterm edia. Si x no esta
definido, ó si tiene meno s de n el ementos, entonces un espacio adicional es
locali zado automáticamente a x c ada vez que sea necesario.
44
5.5.2 Declaración FOR anidada.
Si ntaxis
for variable 1 = inicio1:paso1:f in1
for variable2 = inicio2:paso2:fin2
declaración 1;
...
declaración n;
end
end
Ejemplo
y=1
for t1=0: 0.1:1
for t2=1: -0.1:0
y(1)=sin(t1*t2)
end
i=i+1;
end
Ejemplo
for i = 1:m
for j = 1:n
A(i , j) = 1/(i +j-1);
end
end
A
La "A" al terminar el ciclo muestra en la pantalla el r esultado final. Es
importante que par a c ad a for halla un end.
45
5.5.3 Declaración W HILE
Si ntaxis:
while expresion
proposición 1;
...
proposición 2;
end
Ejemplos
e=1.0;
while ( 1.0+e)>1.0001
e=e/2.0;
end
n = 1;
while prod(1: n) < 1.0e100, n = n+1; end
n
La i dea es sumar todos los términos necesarios hasta prod ucir un resultado que,
en la pr eci sión finita la d e computador a, no cam bie aunque m ás términos sean
añadidos. Par a esto pr ocedemo s de la forma siguiente:
46
E = zeros(size(A));
F = e ye(size(A));
k = 1;
while norm(E+F-E, 1) > 0
E = E + F;
F = A*F/k
k = k+1;
end
Aqui A es la m atriz dada, E representa la sum a parcial de l a serie, F es un
término individual en la serie, y k es el índice d e este térmi no.
b) if expr esión
proposición 1;
...
proposición n;
else
proposición 1;
...
proposición m;
end
47
c) if expresión
proposición 1;
...
proposición n;
elseif
proposición 1;
...
proposición m;
else
proposición 1;
...
proposición r;
end
Ejemplos
if dv(i) > maxer
maxer=dv(i);
nmaxe=i;
end
sum=0.0; y=1;
while i <=so
n=i nput(`Introduzca n, interrumpe con valor negativo `);
if n<0, break, end;
if n==0
sum=sum+n;
elseif n<=10
sum=sum+n/2;
else
sum=sum+n/10;
end
end
48
A conti nuación se m uestra como un cálc ulo se pued e di vi dir en tr es casos,
dependiendo d el si gno ó paridad de un enter o n:
if n < 0
A = negat ive(n)
else if rem(n, 2) == 0
A = even( n)
else
A = odd( n)
end
49
5.6 Algebra Matricial
5.6.1 Creación de una matriz
Ejemplo
>> A=[ 1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> B=reshape(A,2,6)
B =
1 3 5 7 9 11
2 4 6 8 10 12
>> A(1,1)=A(1,2)+A(2,1)
A =
5 2
3 4
50
>> A(1,2)=A(2,1)
A =
5 3
3 4
>> A(2,2)=10
A =
5 3
3 10
>> A=[ 1 2; 3 4; 5 6 ]
A =
1 2
3 4
5 6
>> b=A(:)
b =
1
3
5
2
4
6
51
Modificación de los el emento s
>> A(:)=10:15
A =
10 13
11 14
12 15
52
Matrices vacias
La declar ación
x = [ ]
A=[1 2; 3 4] + i*[5 6 ; 7 8]
o
A=[1 2; 3 4] + i*[5 6 ; 7 8]
o
A =
1.0000 + 5.0000i 2. 0000 + 6.0000i
53
Determinante de A: de t(A)
>> A=[ 1 2 3;4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>> det(A)
ans =0
Diagonal d e A: diag(A)
>> diag(A)
ans =
1
5
9
>> eig(A)
ans =
-3.0000
2.0000
1.0000
v - Vectores característicos
d - valores caracterí sticos
54
>> [ v d]=eig(A)
v =
0.9435 -0.8729 0.5774
-0.3145 -0.4364 0.5774
0.1048 -0.2182 0.5774
d =
-3.0000 0 0
0 2.0000 0
0 0 1.0000
>> expm(A)
ans =
5.2541 11.0757 -13.6115
2.2686 5.2541 -4.8044
0.8007 2.2686 -0.3510
55
- Inversa d e A: inv(A)
>> i nv(A)
ans =
0 1.0000 0
0 0 1.0000
-0.1667 0 1.1667
56
5.7 Archivos de E/S
5.7.1 Declaración fopen
Si ntaxis
id = fopen(` nombre.dat', `permiso')
donde per miso puede ser:
`r' Abre archivo par a lectura
`r+ Abre archivo para lect ura y escritura
`w' Borra el contenido del archiv o ex istente o crea un nuevo archivo y lo abre par a
escrit ura
`w+' Idem que ` w' únicamente que el archivo se abre para lectura y escrit ura
`a' Crea y abr e un nuevo archivo o abre un archivo
`a+' Idem que `a' únic amente que el archivo es abierto para lectur a y escri tur a
Ejemplo
fid = fopen(`archivo.dat','r ')
fid = -1, error
0, lectura/escritura normal
[ fid, mensaje = fopen(`archivo.dat','r ')
Si ntaxis
fread(fid,registros,'precision')
regist ros
`char' o ` uchar '
`short' o `long'
`float' o `double'
57
Ejemplo:
A = fr ead(fid,10,'float')
%s - c adena decimal
%f - punto flotante
% g - form ato g
Si ntaxis:
global variable1, ..., variable_N
Ejemplo
function x=ccdifs(t,x)
global ka,kb
xp=[ x(1)-ka*x(1) *x(2); -x(2)+kb *x(1)*x( 2)];
...
global ka,kb
ka=0.01
kb=0.02
[t,x]=ode23('ccdi fs',0,10,[ 1:1]);
58
5.9 Vectorización de algoritmos y estructuras (for, while)
Par a que los progr am as en MATLAB ejecuten más rápido, debemos vec torizar
estos si em pr e que sea posible. Esto es, d ebemos co nver tir los ciclos for y while
a oper aci ones de vec tores ó de matrices. Por ejem plo, un modo de calcular la
función "sin" para 1001 número s entre 1 y 10 es:
i = 0;
for t = 0:.01:10
i = i + 1;
y(i) = sin(t);
end
Una ver sión vectorizada d el mismo código es
t = 0:.01:10; y = sin(t);
En una computador a lenta, el primer ej emplo tomó 15 segundo s, mientr as que el
segundo tomó 0. 6 segundos.
59
5.10 Gráficas en Dos Dimensiones
5.10.1 Funciones elementales para graficar
plot - crea una gr áfica de vector es ó columnas d e m atrices.
loglog - crea una gr áfi ca utilizando una escala logarítmica par a am bos ejes.
semilogx - crea una g ráfica utilizando una escala logarítmica para el eje-x y una
esc ala lineal para el eje-y.
semilogy - crea una gráfica utilizando una escala logarítmica para el eje- y y una
esc ala lineal para el eje-x.
Puedes añadi r títulos, encabezamientos d e ejes, líneas entre cor tad as y texto a
tus gr áficas utili zand o:
Si y es un vector, pl ot( y) prod uce una gráfica lineal d e los el ementos de y ver sus
el índice d e estos. Si especi fi ca dos vectores como ar gum entos, plot(x, y)
produc e una gr áfica d e y ver sus x.
Sí mbolo Color
y amar illo
m magenta
c cyan (azul claro)
r rojo
g verde
60
b azul
w blanco
k negro
Ejemplo
t=0:pi/200:2*pi;x=sin(t);y1=sin(t+0.5);y2=sin(t+1.0);
plot(x,y1,'r-',x,y2,'g--'); title('Angulo difuso'); xlabel('x=sin(t)'); ...
ylabel('y=sin(t+)')
Si plot es usado con d os argum ento s y si X ó Y tienen más d e una fi la ó col umna,
entonc es:
si Y es una m atri z, y x es un vector, plot(x ,Y) gr afica l as filas ó columnas d e Y
ver sus el vector x;
si X es una m atri z y y es un vec tor, plot(X ,y) gr afica cada fila ó columna de X
ver sus el vector y;
si X y Y son am bas m atrices del mismo tamaño, plot(X , Y) grafi ca las columnas
de X versus las colum nas d e Y.
También puedes usar la función plot con múlti ples par es de arg um entos
matri ciales:
plot (X1, Y1, X2, Y2, ...)
Cad a par X-Y es gr aficado, gener ando líneas múl tiples. Los pares di fer entes
pueden ser d e dimensiones difer entes.
61
5.10.4 Importando Datos
Puede impor tar y gr aficar datos g enerad os fuera d e MATLAB utilizando el
comando load.
Par a evaluar una función, se crea un arch ivo de esta función y se le pasa el
nombr e del archi vo a fplot. El sigui ente archivo-M de ti po función define la
función anterior como fofx.
function y = fofx( x)
y = cos(t an(pi*x) );
Este archi vo se guard a con el nombre de fof x.m. Ahora la instr ucc ión
fplot('fofx', [ 0 1])
produc e la gr áfi ca:
62
Aquí, fplot usa m eno s punto s para evaluar la misma función a inter valos m ás
cerr ados en la r egió n donde la rapidez de c ambio es m ayor.
on Activa hol d
loglog
Si ntaxis
a) loglog(x,y)
b) loglog(x,y,'tipo_línea')
c)loglog(x1',y1','tipo _línea_1',...,
xn,yn,'tipo_línea_n')
Ejemplo
x=l ogspace(-1,3); l oglog(x,exp( x))
donde logspace tiene las form as:
logspace( a, b)
logspace( a, b,n)
a,b exponentes de los límit es. Es decir, 10^a y 10^b
semilog(x), semilog( y)
Si ntaxis
a) semilogx(x, y)
b) semilogy(x, y)
Ejemplo
x=0:.1:20; semil ogy( x,10 .^x)
63
fil l
Dibuja el area interio r de una curva en d etermi nado color
Si ntaxis:
a) fill(x,y,'c ')
b) fill(x1, y1,'c1',. ..,xn, yn,cn)
Ejemplo
t=0:0.5: 2*pi; x=sin(t ); fill(t,x,'b')
t=0:0.5: 2*pi; x=sin(t ); y=cos(t); fill( y,x,'r ')
subplot
Dibuja la pantall a en mxn subdivisioens, num er adas por el parám etro p, de
izquierda a der ech a, ini ciando por la fila superi or
Si ntaxis:
subplot (m,n, p)
Ejemplo:
vt=sm vars(:,1);
it=smvars(:,2);
rang=smvars(:,3);
ikd=smvars(:,4);
subplot(2,2,1);
plot(vt)
subplot(2,2,2)
plot(it)
supl ot (2,2,3)
plot(rang)
subplot(2,2,4)
plot(ikd)
bar
Crea una gráfica d e barr as
Si ntaxis:
a) bar( y);
b) bar(x,y);
c) [xb,yb]=bar( y); => plot(xb, yb)
d) [xb, yb]=bar(x, y) ; => plot(xb, yb)
64
Ejemplo
x=-2.8:0.2:2.8
bar(x,exp(-x.*x)
Nota: Los valor es de x deben estar igualm ente espaciados
stairs
Igual que bar, únicamente si n líneas internas
f plot
Dibuja l a gr áfica de una función
Si ntaxis:
a) fplot(`función', [inicio,f inal] )
b) fplot(`función', [inicio,f inal] ,n)
c) fplot(`función', [ inicio, final],n,ángulo)
d) [x,y]=f plot(`f unción', [inicio,final]) => plot(x,y)
n - número de puntos
ángulo - ángulo ent re segment os sucesivos de la función
Ejemplo
fplot(`sin',[ 0,pi])
fplot(`tanh',[ -2 2])
function y=func(x)
y=200*sin(x(:))./ x(: );
fplot(`func',[ -30 30],60,2)
pol ar
Dibujo en coordenadas polar es
Si ntaxis:
a) polar( ángulo, radio)
b) polar( ángulo, radio, `tipo_línea')
Ejemplo
t=0:0.01:2*pi;
polar(t,sin(5*t))
65
colormap
Colorea con sombr ead o el interi or de una curva o polí gono
Si ntaxis
color map( color base)
donde colorbase es:
gray
hot
cool
copper
pink
Ejemplo
t=0:0.05:2*pi; x=sin(t); y=cos(t); colormap(hot(130)); ...
Nota: 130 es opcional el r ango 0- 255
Si ntaxis:
a) plot 3(x,y,z)
b) plot 3(x,y,z)
c) plot3(x,y,z,'t ipo_ línea)
d) plot 3(x1, y1,z1, 'tipo_línea',...,xn,yn,zn, 'tipo_línea')
Ejemplo
t=0:0.05:10* pi ; plot3( si n(t),cos(t),t)
contour, contour3
Gener a dibujos com puestos de líneas de valores de datos constantes obtenidos
de una m atriz de entr ad a
Si ntaxis:
a) contour(z)
b) contour(z,n)
66
c) contour(x,y,z)
d) contour(x,y,z,n)
Ejemplo
contour(peeks)
contour(peeks,30)
contour3
Igual función de co nto ur en 3 dimensiones
Si ntaxis:
a) contour3(z)
b) contour3(z,n)
c) contour3(x,y,z)
d) contour3(x,y, z, n)
Ejemplo
contour3(peaks,30)
meshgrid
Gener a arreglos X y Y par a dibujos en 3 dim ensi ones
Si ntaxis:
a) [X, Y] = meshgr id( x, y)
b) [X, Y] = meshgr id( x) => meshgr id(x, y)
Ejemplo. Evalue y dibuje la funcion z=x *exp(-x^2-y^2) sobr e el rango -2<=x< =2,
-2<=y<=2
[ X,Y]=m eshgrid(-2:2:2); z=x.*exp( -x^2- y^2); ...
mesh(Z)
67
mesh, meshc y meshz
Dibujan una superfi cie de m alla tridimensional , crando una perspectiva del
dibujo, sobre y bajo el plano de referencia.
Si ntaxis:
a) mesh(x,y, z, c)
b) mesh(x,y, z)
c) mesh(x,y,z, c)
d) mesh(x,y, z)
e) mesh(z,c)
f) mesh(z)
g) meshc( ...) => mismo que mesh
h) meshc( ...) => mismo que mesh
meshc
Añade un plano d e co ntorno d ebajo del dibujo
meshz
Añade un plano d e refer encia o cor ti na al di bujo
Ejemplo:
[ x,y] = meshgrid(-3:2:3); z=peaks(x, y) ; meshc(x,y,z)
[ x,y] = meshgrid(-3:2:3); z=peaks(x, y) ; meshz(x,y,z)
surf , surf c
Crean super fi cies som breadas en 3 di mensiones
Si ntaxis:
a) surf(x,y,z,c)
b) surf(x,y,z)
c) surf (x, y,z,c)
d) surf(x,y,z)
e) surf( z,c)
f) surf(z)
g) surfc(...) => misma Sintaxis que surf
68
Ejemplo
[ x,y]=m eshgrid(-3:.2:3); z=peaks( x, y); surf( x, y,z)
k=5; n=2^k-1; [ x,y,z]=sphere(n); c=hadamard(2^k); ...
surf(x,y,z,c); colormap(hot)
hadamard
Matriz had am ard com puesta d e 1's y - 1's, emplead a en procesamiento de señales
y análisis numérico
sphere
Gener a una esfera
Si ntaxis
[x,y,z] = sphere(n)
n - número de mer idianos
Ejemplo
[ x,y,z]=sphere(20);
mesh(x, y, z)
o con :
color map(hot)
surf l
Superficie som br ead a tridimensioanl co n efecto de r eflexi ón d e luz
Si ntaxis:
a) surfl(z)
b) surfl(z,s)
c) surf l(x,y,z)
d) surfl(x,y, z, s)
s - dirección de la luz
69
Ejemplo
[ x,y]=m eshgrid(-3:0.01:3);
z=peaks( x, y);
surfl(x,y,z)
shading
Establec e las propiedades de sombr eado co n color
Si ntaxis
shading faceted
shading interp
shading flat
shading interp - el color en cada segm ento varia linealmente e interpolo los
valor es extr emos o esquinas
shading f aceted - utiliza som breado "flat" con líneas de malla negras
superpuestas
axis
Escala y apariencia de los ej es
Si ntaxis:
a) axis([xmin, xmax, ymin, ymax])
b) axis([xmin, xmax, ymin, ymax, zmin, zmax ])
c) axis(`auto')
d) axis(`ij')
e) axis(`xy')
f) axis(`square')
g) axis(`equal')
h) axis(`off')
70
i) axis(`on')
donde:
axis(`auto') realiza el esc alamiento d e ejes a su modo de auto esc alami ento por
defecto.
axis(`ij') dibuja nuevamente la gr áfica.
axis(`xy') regr esa la forma de ejes cartesianos que existe por defecto. El eje x
es horizontal y se numer a d e i zquierda a der echa. El ej e y es vertical y se
num er a de abajo h acia arri ba
axis(`square') determi na que la región d e los ejes es cuadr ada
Ejemplo
colormap(hot)
fil l3(r and(3,4), rand(3,4), rand(3,4), rand(3,4))
Ejemplo
71
load carga en el ar ea de tr abajo un archivo (imagen, so ni do, dato s, etc)
Si ntaxis
a) load archivo
b) load archivo.ext
donde:
ext - extensión
Ejemplo
load clown
Si ntaxis:
a) brighten( alf a)
b) brighten( map,alfa)
donde:
0<alfa<1 más brillant e
-1<alfa<0 más obscuro
72
clf borra la figur a
sound convi erte un vector en so nido (en co mputadoras sparc y m acinto sh)
Si ntaxis
a) sound( y)
b) sound( y, Fs)
donde:
Fs f recuencia especificada en H z
Ejemplo
load train
sound( y,Fs)
t=(0:length( y)-1)/Fs;
plot(t,y)
73
el cúal es el form ato de archi vo uti lizado por MATLAB. Para informaci ón acerca
de las téc nicas utilizadas par a importar y exportar d ato s consulte la sección de
Importando y Expor tando Datos de la g uí a d e MATLAB ó utilice al comando h elp
de MATLAB.
74
6. SIMULINK
Si muli nk es una herramienta par a el modelaje, análisi s y simulación d e una amplia
vari edad de sistem as físicos y matemáti cos, inclusive aquellos con el emento s no
lineales y aquellos que hacen uso d e ti em pos conti nuo s y di scr etos. Com o una
extensió n de MatL ab, Simuli nk adiciona muc has car acterísticas especí ficas a los
sistemas dinámicos, mientr as conser va toda la funcionali dad de propó si to
general d e MatL ab. Así Simulink no es com pletam ente un programa separ ado de
MatLab, sino un anex o a él. El ambiente de MatLab está siem pr e disponi ble
mientr as se ejecuta una simulación en Simulink.
Si muli nk tiene dos fases de uso: la definici ón del modelo y el análi si s del
modelo. La definici ón del modelo si gnifica construir el modelo a par tir de
elem entos básicos co nstruidos pr eviam ente, tal como, i ntegradores, bloques de
ganancia o servomotores. El análisis del m odelo signifi ca r eali zar la simulación,
linealización y deter minar el punto de equilibri o de un modelo pr evi am ente
definido.
Par a simplificar la defini ción d el modelo Simulink usa difer entes clases de
ventanas llam adas ventanas de diagram as d e bloques. En estas ventanas se puede
crear y editar un mod elo gr áficam ente usando el r atón. Si mulink usa un ambiente
gráfico lo que hace sencillo la creación d e los modelo s de sistem as.
Después d e d efinir un m odelo este puede ser anali zado selecci onando una opci ón
desde lo s menús de Simulink o entrando com ando s desd e la línea de com andos de
MatLab.
Si muli nk puede simular cualquier sistem a que pueda ser definido por ec uaciones
difer enciales continuas y ecuaci ones difer enciales discr etas. Esto significa que
se puede mod elar sistem as co ntinuos en el tiem po, discretos en el tiempo o
sistemas híbridos.
Par a r ealizar un sistema debe abrirse una nueva ventana d e diagrama de bloques
sel eccionando l a o pción fi le del m enú princi pal d el Simulink y allí la opción new.
En esta nueva ventana se colocar án tod os los bloques inter conectado s que
formar án el sistem a deseado.
75
Como ej emplo se h a to mado un gener ador d e ondas seno de la libr ería d e fuentes
"sources" y un osciloscopio de la libr ería "si nks", ambos se unieron m ediante un
conector usando el ratón. Este sistema se almacena como un archi vo-m.
Haciendo doble click sobre cada elem ento d el si stema se pueden ver y modificar
sus características.
En este submenú está la opción start que permi te ejec utar el programa. Tambi én
está la opción par ameter s que activa el panel d e co ntrol d e Simulink en do nd e se
definen los m étodos y par ámetros usad os par a la simulación, tal como se
muestr a a conti nuación:
Al ejecutar el pro gr ama seno.m creado m ediante simulink, se puede obser var la
respuesta al h acer do ble click en el oscilosc opio.
Por ej emplo, para i mplem entar un sistema que emplea un c ontrol ador PID
tenemos:
En este di agr ama se tiene al bloque llamado PID que fue definido previam ente y
agr upado como uno solo. El conteni do de di cho bloque se obti ene haciendo doble
click sobr e él. A continuación se muestr a el bloque PID:
76
6.1 Acelerador de Simulink
Par a increm entar la velocidad de Simulink se debe instalar el acelerador
"Acceler ator". Este permite autom áticam ente gener ar una ver sión m ejorada de
los modelos los cual es corr er án diez veces m ás r ápido que el original. El
aceler ador puede ser usado so bre modelos continuos, discretos en el tiem po y
híbridos.
El ac elerador trabaj a gener ando y com pilando un código-C par a un mod elo dado.
Una vez se com pleta la compilación, la simulaci ón es ej ecutada en la ventada de
modelos d e Simulink exactamente igual que antes sólo que m ás rápidam ente. El
propósito del ac eler ad or es aumentar la velocidad de simulación.
Si el progr am a MatLab po see i nstalado el "Acceler ator" podrá inici arse la acci ón
aceler ador a seleccionando la opción simulation en el m enú pri ncipal del Sim uli nk
y dentro de esta seleccionando la opción Acceler ate. Esta acci ón es to talm ente
transpar ente en el sentido de que el incremento de la velocidad se presenta sin
ningún otro requerimiento por parte del usuari o.
El código-C es di señado tal que puede ser ejecutado en ti empo real. No requi ere
ser escrito m anualm ente por un progr amador pues es creado a nivel de
diagram as de bloques en Simulink. El código gener ado pued e c orrer sobre un
amplio rango d e hardwar e ubicado en estaci ones d e trabajo, PC o
microprocesador es. E ste códi go es la form a en la que pued e usar e el Si mulink
para adqui si ción de d atos.
77
7. COMANDOS DE MATLAB
78
Controlli ng the command wi ndow:
cedit - Set command li ne edit/r ec all facili ty par ameter s.
- Minus arith
* Matrix multi pli cation arith
79
kro n Kro nec ker tensor product kron
: Colon colon
( ) Parentheses par en
, Comma punct
~ Logical N OT relop
xor Logical EXCLUSIVE OR xor
Logical characteristics:
80
Control S ystem Toolbox Commands :
Model building :
append - Append system dynamics.
Model conversions>:
c2d - Co nti nuous to discrete-time conversio n.
81
ss2tf - State-space to transfer func tion conversion.
Model reduction :
balr eal - Balanced r ealization.
Model realizations :
cano n - Cano nical for m.
ctrbf - Co ntrollability stai rcase form.
Model properties :
covar - Co nti nuous covari ance r esponse to w hite noise.
82
gram - Co ntrollability and o bser vability gr ami ans.
Ti me response:
83
ngrid - Draw grid lines for Nichols plot.
Root locus:
Gain selection:
dlqew - General discrete linear quadr atic estim ator desi gn.
lqrd - Discrete regulator design from conti nuous cost func ti on.
lqry - Regulator desig n with w eighti ng o n outputs.
Equation solution:
84
Demonstrations:
ctrldemo - Introduction to the Co ntrol Toolbox.
85
8. APLICANDO MATLAB AL CONTROL DE PROCESOS
8.1 Respuesta en el dominio del tiempo
Par a obtener la respuesta de un sistem a en el ti empo ante una entrad a estándar,
debe primero defi nirse el sistem a. Para ello pued e defini rse en MatLab la
función de tr ansfer encia propi a del sistem a o las ecuaciones de estado.
La funci ón d e transferencia de un si stem a es una r elación fo rmada por un
num er ador y un denomi nador:
>>y=[1];
86
Puede d efinir se el ti empo en el cual se desea la respuesta al esc alón, mediante
un vec tor de tiem po T, step(num,d en,T)
>>t=0:0.1:20;
>>step(y, u,t)
x = Ax + Bu
y = Cx + Du
[A,B,C,D]=tf2ss( num,den)
a =
-0.2500 - 1. 0000
1.0000 0
b =
1
0
c =
0 1
d =
87
Se puede h acer l a conversión de una ecuaci ón de estado a su equivalente funci ón
de tr ansfer encia, mediante el com ando ss2tf. Se deben especifi car los vecto res
para almacenar los co efi cientes del polinom i o numerador y del d enom inador. Su
Si ntaxis es:
[num,den]=ss2tf (a,b,c,d)
Ejemplo
>>[ num,den]=ss2t f(a,b,c,d)
num =
0 0 1.0000
den =
1.0000 0.2500 1.0000
Ejemplo
>>step(a,b,c,d)
Par a obtener l a r espuesta en el ti empo para una entr ada impulso unitario se usa
el comando impulse, con Sintaxis idénti ca a la uti lizad a con el comando step:
Si se define el si stem a en MatLab po r los polinomios del numer ador y
denominador d e l a función de transferenci a tenemos:
» y=[ 1 5 4];
» u=[ 1 6 11 6];
» impulse( y,u)
88
B =
1
0
0
C =
1 5 4
D =
0
» impulse(A,B,C,D)
89
MatLab permite, además d e obtener la respuesta en el tiem po par a una entr ada
esc aló n o impulso, también obtener respuesta para otr as entr ad as tal como
rampas o sinusoides. El comando lsim permite obtener la respuesta en el tiem po
para un sistema con una entrad a u, donde u se define como una función del
tiempo.
La Sintaxis de este co mando es: lsim (A,B,C,D,U,T) usando las m atri ces de estado
o lsim(NUM,DEN,U,T) usando la función de transferencia.
seg. NUM y DEN son los vector es d e los coefi cientes decr eci entes en potencia
de S de los poli nomios del num er ador y del denomi nador r especti vamente. En la
vari able Y se alm acena la salida del sistema en función del tiem po T. El comando
plot permite presentar en la ventana de figur as la vari able Y (salida) y la
entr ada U (ram pa) en función del tiempo, o bteniéndose:
90
8.2 Respuesta en el dominio de la frecuencia
Par a el estudio de un sistema en el dom inio de la fr ecuenci a existen tr es
herr ami entas disponi bles en MatLab com o son: los di agr am as de Bod e, de
Nyquist y de Nichols.
Par a obtener el diagrama de Bode de una función de tr ansfer enc ia, se d efi nen
dos vec tor es cuyo s elem ento s son los c oeficientes de los poli nomios del
num er ador y del deno minador en potencias decreci entes d e S. Esto s vector es
son usados en el comando bode con la sigui ente
Si ntaxis:
bode(num,den).
Se define la función de tr ansferencia:
Ejemplo
>>y=[1];
91
Otro formato m edi ante el cual el com ando bode pr esenta el diagram a d e bode,
es a tr avés de l as ecuaciones de estado representadas por las matrices de
estado (A,B,C,D). Su
Si ntaxis es:
bode(A,B, C,D).
Par a especificar un rango deseado de frec uenci as en las cuales se desea obtener
el di agr ama d e Bod e, se emplea un vector de frecuencias en el que se especifi ca
la fr ecuenci a i nicial, el i ncremento y la frec uencia fi nal. Por ej em plo:
>>W=0:0.1:100;
>>bode( y,u,W)
Este comando muestra el diagr am a de Bode entr e 0 y 100 rad /s.
Otra h err amienta d e análisis en el dom ini o en la fr ecuenci a que ofrece MatLab
es el diagrama d e Nichols. Para obtener el di agrama de Nichols se utiliza el
comando nichols, cuya Sintaxi s es idéntica a la del c omando bode:
nichols(A,B,C,D,W) si se emplean las matric es d e estado o nichols(num,d en,W) si
se em plea la función de tr ansferencia.
92
Otra h err amienta d e análisis en el dom ini o en la fr ecuenci a que ofrece MatLab
es el diag ram a de N yqui st. Para obtenerlo se utiliza el comand o nyquist, c uya
Si ntaxis es id éntica a la d el comando bod e y nichols: nyquist(A ,B,C,D, W) si se
empl ean las m atri ces de estado o nyqui st(num,den,W) si se emplea la función de
transfer encia.
Si se define y com o el vector d e los coeficientes d el polinomio del numerador y
u como el del denominador:
>>y=[ 1];
>>u=[ 1 6 5];
>>n yquist( y,u)
MatLab presenta en la ventana de figuras el diagram a d e Nyquist:
93
Par a obtener el m arg en de g anancia, el margen d e fase, la fr ecuencia de cruce
de ganancia y la frecuenci a de cruc e de fase MatLab di spo ne del comando
margin. Las diferentes form as de utilizar este comando son:
[Gm,Pm,Wcg,Wc p] = MARGIN(A,B,C,D) r etorna los valores d e m arg en de g anancia
(Gm), margen d e fase (Pm), fr ecuencia de cruce de gananci a (Wcg) y la
frec uenci a d e cruce d e fase (Wcp) cuando se tr abaja co n las matri ces de estado
(A,B,C,D).
>>num=10;
>>den=[1 0.25 1];
>>[ Gm ,Pm,Wcg,Wcp] =margin(num,den)
Gm =
Inf
Pm =
4.7487
Wcg =
NaN
Wcp =
3.3114
>>margin(num,den)
94
8.3 Lugar de las raíces
Par a obtener el lug ar de las r aíces de un sistem a como el mostr ado en el
siguiente diagr am a:
Par a o btener el lugar de las r aíces, MatL ab dispone del com ando rlocus. Las
difer entes
Si ntaxis para utilizar este com ando son:
rlocus(NUM,DEN) calc ula y dibuja el lug ar d e las r aíces cuando se tr abaja con la
función de tr ansfer encia donde NUM y DEN son los vector es de los coefici entes
en potencia descendiente de S de los poli nomios d el num er ador y d enom inador
de l a función de tr ansfer encia G(S). MatL ab g ener ar á auto máticam ente un
conjunto de valores de la ganancia K.
rlocus(NUM,DEN,K): calcula y dibuja el lugar de las raí ces cuando se trabaj a con
la función de transferenci a y ha sido previ amente definido el rango de valor es
de K. Por ejem plo de 0 a 100 co n incr ementos de 10: k=0:10:100
95
Par a la siguiente form a modi ficada de la ecuación c aracterística de un sistem a
se desea hallar el lugar de las r aí ces medi ante MatL ab:
>>num=[0,0,0,1];
>>den=[1,3,2,0];
>>rlocus(num,den)
MatLab dispone del comando rl ocfind que permite determinar los polos del
sistema par a una valor determi nado de k. Su
Si ntaxis es:
Par a selecci onar el punto en el cual calcular los polos del lug ar de las raíces si n
usar el cursor se agr ega un par ámetro al comando rlocfind. Este debe ser el
punto o los puntos en donde se d esea tom ar el valor de k. La nueva
Si ntaxis es:
[K,POLES] = rlocfind(A,B,C,D,P) o [K,POLE S] = rlocfind( num,den,P)
P debe d efinirse previ amente i ndicando la parte real e imaginari a del mismo. Por
ejem plo: P=3+ 0i o P=1-0.555i.
96
8.4 Controladores PID
Par a im plementar lo s di fer entes tipos de controladores (P, PD, PI, PID) en
MatLab se h ace uso de la función de transfer encia propia del sistema a objeto
de estudio. Si dicho sistema es de la forma:
donde G(S) es la función de transfer encia de la pl anta o proc eso; mientr as que
C(S) es la función de transfer encia del controlador.
Par a el caso d el controlador pro porci onal, C(S)=Kp, que es una constante o valor
esc alar. El controlador PI es C(S)=Kp + Ki/S que pued e repr esentar se como una
rel ación ente dos poli nomi os.
que es de nuevo una r elación entr e do s polinomi os. Los coeficientes decr eci entes
en potencias d e S d e esto s polinomio pueden ser almac enado s en vector es en
MatLab. Si se multiplica el control ador C(S) por la función de tr ansferencia del
proceso o planta G(S) se form ará la funci ón de tr ansfer encia de lazo abierto.
Por ej emplo un G(S) pued e ser:
97
Par a obtener l a respuesta en l azo abierto ante una entrada escalón unitario
tenemos:
>>Kp=50;
>>Ki =1;
>>Kd=10;
>>num=[Kd Kp Ki];
>>den=[1 10 20 0 0];
>>step(num,den)
Par a obtener la respuesta de lazo c err ado en el ti empo par a una entr ada esc alón
uni tario se empl ea el comando cloop, el cual gener a los polinomios del num erador
(numc) y denomi nador (denc) de l a función de tr ansf erencia de lazo cerr ado con
realim entación unitari a a partir de los polinomi os de la función d e transfer encia
de lazo abierto (num y den). Su
Si ntaxis es:
[numc,denc] =cloop(num,den,si gn)
El signo de la realimentaci ón viene dado por sig n. Par a el ejemplo anterior,
tenemos:
>>Kp=500;
>>Ki =1;
>>Kd=100;
>>num1=[ Kd Kp K i];
>>den1=[ 1 0];
>>num2=1;
>>den2=[ 1 10 20 0];
>>[ numc,numd]=cl oop(conv(num1,num2) ,conv(den1,den2),-1);
>>step(numc,denc)
98
9. TRUCOS EN MATLAB®
Paper semilogarítmico gratis: papelbod.m
Par a cotejar sus diagr amas d e Bode:
>>bode(num,den)
donde num y den so n vectores que conti enen lo s coeficientes d el numer ador y
denominador d e H(s) en ord en d e potencias descendentes de s.
Nota: E sto da las cur vas exactas, no las aproxi maciones asintóticas con líneas
rectas.
Ejemplo: Para ,
Escribi mos
>>bode([ 158.11 15.811],[ 1 5 0])
Prec aución: El punto "." puede sig ni ficar operación el emento- por-el emento o
punto deci mal.
Cuando escribimos un dígi to pegado al punto como "2.", el i nterpr etador cree
que es el núm ero "2.0". Entonces si queremos calcular A2B2, donde A y B son
arreglos y no matrices (o sea, quer emos operación elem ento- por-elemento),
debemos escribir
>>A.^2 .*B.^2 (notar el espacio después del primer 2)
y no
>>A.^2.*B.^2
99
Par a c ambiar el color de trasfondo de l a gr áfica:
>> whi tebg('c ')
donde c es el código del color descrito en help plot.
100
101