Está en la página 1de 101

TUTORIAL DE MATLAB

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

2. LIBRERÍA DE APLICACIONES DE M ATLAB 7


2.1 SIGNAL PROCESSI NG TOOLBOX 7

2.2 THE M ATLAB C M ATH LI BRARY 7


2.2.1 Desarroll o de aplicaciones utilizando la MATLAB C Math Librar y 8
2.2.2 Utilización de MATLAB y de su com pil ador 8
2.2.3 Velocidad y Pr ecisión 9
2.2.4 Lista parcial de funci ones 9
Funci ones matemáticas 9
Funci onales especiales y elementales 9
Algebra lineal numérica 9
Polinomios e interpol ación 9
Métodos numéricos no lineal es 10
Estadística y análisis de Fourier 10
Operaciones algebráicas y lógi cas 10
2.2.5 Utilidades 10
2.2.6 Requeri mientos 10

2.3 THE M ATLAB CO MPILER TOO L BOX 11


2.3.1 Gener ación Autom ática de fichero s MEX. 11
2.3.2 Rendimiento del compilador 12
2.3.3 Opciones de ajuste del r endi miento 12
2.3.4 Requeri mientos del sistema 12
2.3.5 Li mitaciones del códi go compilado 13

2.4 SYMBOLIC MATH TOOLBOX 13

2.5 OPTIM IZATION TOOLBOX 14

2.6 IM AGE PROCESSI NG TOOLBOX 15

2.7 Neural Network Toolbox 16

2.8 NON LINEAR CO NTRO L DESIGN TOO LB OX 17

2.9 NAG FOUNDATIO N TOOL BOX 18

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

5. PROGRAMANDO CON M ATLAB 33


5.1 Generalidades 33
5.1.1 Archivos-M: Comandos y Funci ones 33
5.1.2 Otras funciones 37
5.1.3 Declaraci ón function 41
5.2 Operadores relaci onales 41
5.3 Operadores lógicos 42
5.4 Caract er es especiales 43
5.5 Control de fluj o 44
5.5.1 Declaraci ón FOR simple 44
5.5.2 Declaraci ón FOR anidada. 45
5.5.3 Declaraci ón WHILE 46
5.5.4 Declaraci ones IF, ELSE, ELSEIF y B REAK 47
5.6.1 Creación de una matriz 50
5.6.2 Cambio del orden de una matriz: reshape 50
5.6.3 Modificación indi vidual de element os 50
5.6.4 Modificaciones adicionales de una matriz 51
5.7.1 Declaraci ón f open 57
Ejemplo 57
5.7.2 Declaraci ón f close 57
5.7.3 Declaraci ón f read 57
5.7.4 Declaraci ón fw rit e 58
5.7.5 Declaraci ón f printf 58
5.8 Variabl es globales 58
5.9 Vect ori zación de algorit mos y estr ucturas (for, while) 59
5.10 Gr áficas en Dos Dimensiones 60

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

9. TRUCOS EN M ATL AB® 99


Paper semilogarítmico grat is: papelbod.m 99

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.

MATLAB es un sistem a de tr abajo interactivo cuyo elem ento básico de trabajo


son las m atrices. El program a permi te realizar d e un modo r ápid o la r esoluci ón
num érica d e problem as en un tiem po m ucho menor que si se qui si esen resolver
estos mismos problemas con lenguajes de progr am ación tradi cionales como
pueden ser los lenguaj es Fortran, Basi c o C.
MATLAB go za en la actualidad d e un alto nivel d e implantación en escuelas y
centros universitarios, así como en d epartamentos d e investigaci ón y desarrollo
de m uchas compañí as industri ales nacionales e internacionales. En entor nos
uni ver si tarios, por ejemplo, MATLAB se ha co nverti do en una herramienta
básica, tanto para los profesionales e investigador es de centro s docentes, como
una importante h err amienta para la impar tición de cursos universitari os, tales
como sistemas e i ng enieria d e control, álg ebra li neal, proc eso digital de imagen,
señal, etc. En el mundo industri al, M ATLAB está siendo utili zado como
herr ami enta de i nvestigación par a la r esolución de com plejos problem as
planteados en la realizaci ón y aplicación d e modelos matem áticos en ingeniería.
Los usos m ás c aracterísti cos de la h err amienta los encontramo s en ár eas de
com putación y c álculo num éri co tradi cional , prototi paj e algorítmico, teoría de
control automáti co, estadística, análi sis de series tem porales para el proceso
digi tal de señal.

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.1 Uso de Matrices


MatLab em pl ea m atrices porque con ellas se pued e d escribi r infi nidad de co sas
de una forma altam ente flexible y m atem áticam ente eficiente. Una matriz de
pixeles pued e ser una imagen o una película. Una matriz de fluctuaciones de una
señal puede ser un so nido o una voz hum ana. Y tal vez m ás signi ficati vamente,
una matri z puede describi r una relación li neal entr e los componentes de un
modelo matemático. En este último senti do, una m atri z puede describir el
comportamiento de un sistem a extr emad amente compl ejo. Por ej emplo una
matri z puede representar el vuelo de una avión a 40.000 pi es de altur a, o un
filtro digital de proc esamiento de señales.

1.2 Origen de MatLab


MatLab fue ori ginalm ente desarrollado en lenguaje FORTRAN para ser usado en
computador as m ainframe. Fue el resultado de los pro yec tos Li npack y Ei spack
desarrollados en el Argonne Nati onal Laboratory. Su nombre pro viene de
MATrix LABorator y. Al pasar de lo s años fue complementado y reim plem entado
en lenguaje C. Actualm ente la licencia d e MatLab es pro piedad de M ath Wor ks
Inc .

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

2.1 SIGNAL PROCESSING TOOLBOX


MATLAB tiene una gran colección d e funciones par a el procesami ento d e señal
en el Signal Processing Toolbox. Este incluye funci ones para:

• Análisi s de filtros digitales incluyendo respuesta en frecuenci a, retardo de


grupo, retardo de fase.
• Impl ementación d e filtros, tanto di rec to como usando téc nicas en el dominio
de la fr ecuenci a basadas en la FFT.

• Diseño de filtros IIR, incluyendo Butterwor th, Chebyschev tipo I,


Chebyshebv tipo II y elí ptico.
• Diseño de filtros FIR medi ante el algorítmo óptimo de Parks-McClellan.

• Procesamiento de l a transform ada rápi da d e Fourier FFT, i ncluyendo la


transform ación par a potencias d e dos y su inver sa, y tr ansform ad a par a no
potencias de dos.

2.2 THE MATLAB C MATH LIBRARY


La MATLAB C Math Library proporciona al usuario la capacidad co mputacional de
MATLAB en una libr er ia en form ato objeto enlazabl e. El objetivo principal de la
C Math Library es soportar el desarrollo de apli caciones 'stand alone' utilizando
MATLAB y su compilador. Puede ser utili zada independi entem ente de MATLAB
por progr am adores avezados en lenguaj e C que necesiten prestaciones
computacionales robustas y d e alto r endim iento.
Junto con el com pilador de MATLAB, la C Math Li brary permitirá a los
programador es d e aplicaciones uti lizar MATLAB par a l a creación de aplicaciones
'stand alone'. Par a lo s usuarios clásicos d e MATLAB, se elimi na así cualqui er
nec esi dad d e volver a reescribir algori tmos en lenguaje C par a ser utilizada por
programas externo s. Para aquello s usuarios que sean nuevo s en la tecnología
MATLAB, esta tecnología ofrece una nueva ví a para la reducci ón del tiempo de
desarrollo y puesta a punto d e aplicaciones.
La MATLAB C Math Library proporciona una ampli a gama de funciones clásicas
del program a MATLAB, pro porcionadas como li brerias obj eto, i ncluyendo
básicam ente las si guientes c ategorí as de funciones presentes en MATLAB y
ficheros M compilados:

• Algebra lineal.

• Funciones m atemáticas elem entales y especi ali zadas.


• Oper ador es lógicos y aritméticos.

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.

• Polinomios e inter polaci ón.


• Gestión de c adenas de carac teres.

• Entr ad as y Sali das.


• Gestión de m emoria y error es.

(Nota: Las funciones del tipo Handl e Graphics no están incluidas en la C M ath
Library).

2.2.1 Desarrollo de aplicaciones utilizando la MATLAB C Math


Library
La constr ucción y desarrollo d e aplicaci ones utili zando esta librería es un
proceso d e ampli as per spectivas una vez se tiene un dominio adecuado de su
oper ativa. El producto está dividido en do s categorí as (como librerías objeto):
la librerí a (built-in library) contiene ver siones d e las funciones de MATLAB en
lenguaje C d el tipo numérico, lógico y utilidades. Por otra parte la li brería de
toolbox es (toolbox li brary) contiene ver siones com piladas d e la mayorí a de
ficheros M de MATLAB para cálc ulo num érico, análisis de datos y funciones de
acceso a fichero s y m atrices.

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.

2.2.2 Utilización de MATLAB y de su compilador


Par a constr uir una apli cación d el ti po 'stand alone' que inc orpore códi go
ori ginalmente desarrollado como ficheros M de MATLAB , deberán seguir se los
paso s si gui entes:

1. Utili zar el compilador de MATLAB para co nvertir fichero s M en C mediante


la utilización de la instrucción mcc -e (la cual es exter na a MATLAB).
2. Compilar el código C fuente en código objeto utilizando un compilador ANSI
C.

3. Enlazar el código resultante con la MATLAB C Math Library y c on cualqui er


tipo de ficheros y progr amas específi cos que h ayan si do previ am ente
definidos por el usuari o.

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.

2.2.4 Lista parcial de funciones


Funciones matemáticas

Funcionales especiales y elementales


Funciones g amm a, beta y elípticas.
Transform aci ón d e sistemas de coordenadas.

Matriz identidad y otras matrices elementales.


Matrices de Hilbert, Toeplitz, Vanderm onde, Had am ard, etc.

Par tes r eales, imaginari as y compl ejas conjug adas.

Funciones trigonom étricas y de potenci as.

Algebra lineal numérica


Valores pro pios y descom posición de m atrices.

Funciones g enerales de evaluación de m atri ces.


Determinantes, no rm as, rango s, etc.

Matrices inver sas y factori zación d e matrices.


Matriz ex ponencial, logarítmica y raíces cuadrad as.

Polinomios e interpolación
Inter pol ación 1-D y 2-D.
Construcción polinomi al.

Inter pol ación por spli nes cúbi cos.

Diferenciación d e polinomios.
Evaluación de polinomios.

Multiplicación y di vi sión de polinomios.

Residuos d e polino mios y residuos.

9
Métodos numéricos no lineales
Búsqueda de ceros en funciones de una única variable.

Minimización de funci ones d e una o más vari ables.


Resolución num érica de integr ales.

Solución num érica de ecuaciones diferenci ales ordi nari as.

Estadística y análisis de Fourier


Convolución 1-D y 2-D.

Filtros digitales 1- D y 2-D.


Transform adas de Fourier 1-D y 2-D y su inversa.

Coeficientes de correl ación y m atrices de covarianza.

Deconvolución.
Magnitudes y áng ulos de fase.

Funciones m ax, min, sum , mean y otras funciones de estadísti ca básica.

Operaciones algebráicas y lógicas


Suma, r esta, multi pli cación, división y potencias de m atri ces.

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.

Conver si ón d e tipos de datos Fortran.

Funciones d e fech a y hora.


Clasificación de m atrices.

Conver si ón d e núm eros a c adenas y vicever sa.

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:

1. Como un generador MEX autom ático. Pueden convertirse fich eros M en


funciones C ejecutables que se ejec utar an desde dentro de MATLAB. Como
un generador de código C fuente.

2. Pueden co nstruir se apli caciones que se ej ecutar an ind ependientem ente de


MATLAB. Estas aplicaciones externas requi eren d e la MATLAB C Math
Library, que está disponible separ adamente.

Mediante la conver sión autom ática d e fichero s M en código C fuente, el


compilador MATLAB elimina consumo de ti empo y la conver sión m anual de código.
Todo el proc eso de co nver si ón, compilación y enlazado se ini cia a través de una
simple instrucción d e MATLAB.

2.3.1 Generación Automática de ficheros MEX.


El compilador de MATLAB automatiza la creación de fi cheros MEX de C
(MATLAB Ejecutables).

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:

1. El compi lador de MATLAB traduce las funciones MATLAB en sus funciones


equivalente en lenguaj e C.
2. La instrucci ón MATLAB cmex llam a al compi lador y al enlazador del sistem a
para construir un fichero MEX objeto.

3. El intér pr ete d e MATLAB enlaza automáticam ente la función de MATLAB


como 'runtime'.
Mientr as se efec túa una conver sión de l os ficheros M en fi chero s MEX, el
compilador realiza llamadas a las r utinas de la libr eri a C par a muchas de las
instr ucciones contenidas en el propio núcleo de MATLAB. Existen algunas
funciones, incluyendo las ruti nas 'Handle G raphics', par a las cuales se g eneran
de nuevo llamadas 'callbacks' a MATLAB.
Pueden conver tirse convenientemente fi chero s M en código fuente C par a
incorporarlos posterio rmente en los fi ch ero s ex terno s desarrollados en leng uaj e
C, si ese es el caso. Esta opción es ideal par a usuari os que quieren sac ar la
máxi ma ventaja de M ATLAB desde cualquier otra aplicación o pr oducir código C
efi ciente a par ti r de los algoritmos d esar rollados con MATLAB. Los desarrollos

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.

2. Compilar el código C fuente en código obj eto uti lizando un compilador C.


3. Enlazar el código resultante con l as librer ías matem áticas C de MATLAB y
los fichero s específicos que dispo ngamos.

2.3.2 Rendimiento del compilador


Mediante l a compilac ión de los ficheros M se puede o btener un r endimiento
significati vo. La veloci dad de mejor a d e este r endimiento, depend e fuertemente
de cada aplicaci ón. En algunos casos el rendim iento pued e m ejorar hasta en 200
vec es la ej ecución si la com par amos con el m odo de trabajo i nterpr etado del
programa. Las o per aciones matriciales y vectoriales ejecutadas desd e MATLAB
ya están fuer tem ente optim izad as en su diseño. Si n embarg o, mediante la
utilización del com pilador se obtendr án si gni ficativas m ejoras.

2.3.3 Opciones de ajuste del rendimiento


El compilador d e MATLAB ofrece varias opci ones que permiten g enerar el
programa final de la forma más eficiente. Por ejem plo, Ud. puede directam ente:

• 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.

2.3.4 Requerimientos del sistema


Par a utilizar el com pi lador d e MATLAB par a cr ear fichero s MEX se nec esi ta la
ver sión de MATLAB 4.2c y tener instalado uno de lo s siguientes c ompi ladores de
lenguaje C:

PC/Microsoft Windows
Metawar e High C/C ++ V.3.0 o superior.

Watcom C V.10. 0 o superior


Power M acInto sh

MetroWer ks Cod eWarrior C V.7

12
MPW MrC V.1.0b2 o PPCC version 1. 0.5

680x 0 MacIntosh
MPW C Versión 3.4

UNIX y VMS

Cualqui er compilador ANSI C (Nota: El co mpilador d e SunO S 4.1.X no es un


compilador ANSI C).
Cualqui era que sea el equipo informáti co que vaya a utili zar se par a desarrollar
aplicaciones 'stand alone' se requier e, además d el compilado r d e MATLAB, que
se tengan las MATLAB C Math Libr ar y y un c om pilador AN SI C.

2.3.5 Limitaciones del código compilado


Ciertas instr ucciones, como load y eval, no están soportadas po r el compilador
de MATLAB . Este no puede generar código de los diagr am as de bloques de
SIMULINK. Los toolboxes de MATLAB pued en incluir fichero s MEX y otros
componentes que no son compilables.

2.4 SYMBOLIC MATH TOOLBOX


El Toolbox de M atem áti ca Simbólica, añad e a MATLAB la capacidad d e r eali zar
cálculos simbólicos basados en MAPLE V © soportando adem ás (The Extend ed
Symboli c Math Toolbo x) las li br erías especi alizad as, y los progr amas r eali zados
para este último. Entre otros, los principales tipos de operaciones sopor tados
son lo s sig uientes:

• Algebra simbólica: Derivaci ón, integración y simplifi cación de expr esiones


matemáticas.

• Algebra li neal ex ac ta: Inver sas, deter minantes, autovalor es y formas


canó ni cas de m atri ces si mbólicas.
• Aritméti ca de pr ecisi ón vari able: Evaluación de expr esiones m atemáticas con
diver sos g rados d e pr ecisión.

• Resolución de ecuaciones: Resolución num éri ca y simbólica d e ecuaciones


alg ebraicas y difer enciales.
• Funciones m atem áticas especi ales: Evaluación d e la m ayorí a de las funciones
utilizad as en m atemáti cas apli cadas.

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

2.5 OPTIMIZATION TOOLBOX


El toolbox de optimización co nsta d e un conjunto de funci ones que r esuelven
problem as d e extr em os, co n o sin co ndiciones, d e funciones reales las cual es son
generalm ente multivar iables y no lineales.

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:

• Cálculo de un extr em o local (m áximo o mínimo) de una función r eal f(x), en


general multivari able y no li neal, sin i mponer ninguna r estricción o condici ón
a la solución. Como caso particular, se i ncluye una rutina especial para
problemas d e mí nimos cuadrado s no lineales.

• Cálculo de un extr em o local (máximo o mínimo) de una función r eal f(x), en


general multi vari able y no lineal, condi cionado a que la solución sati sfaga
ciertas condiciones de desig uald ad (g(x)<=0) y/o igualdad (g(x)=0).

• Problem as d e aproxim ación a un conjunto de objeti vo s.


• Cálculo de soluciones de un sistem a de ecuaci ones co ntinuas y, en general, no
lineales.

• Solución de problemas mi nim ax.


• Progr amación li neal.

• Progr amación cuadráti ca.


• Problem as d e mí nimos cuadrado s no negativos.

14
2.6 IMAGE PROCESSING TOOLBOX

Este Toolbo x proporci ona a MATLAB de un conjunto d e funciones que am pli a l as


capaci dades del prod ucto para r ealizar desarrollo de aplicaciones y de nuevos
algoritmos en el campo del proceso y análisis de imagenes. El entorno
matemático y de cr eación de MATLAB es ideal par a el proc esado de imág enes, ya
que estas im ág enes son, al fi n y al c abo, matri ces. Este toolbox i ncorpora
funciones par a:
• Diseño de filtros.

• Mejora y r etocado de imágenes.

• Análisi s y estadística de i mág enes.

• Oper aci ones mor fológicas, geom étri cas y de color.

• Transform aciones 2D.


El proc eso d e imágenes es un c ampo d e trabajo absolutamente crucial para
aquello s colectivo s e industrias que estén trabaj ando en áreas como diagnósti co
médico, astro nomí a, geofí sica, ciencia medioambi entales, análisis de datos en
labor atorios, i nspecci ón industrial, etc. Los prog ram as actuales de procesado y
análisis de imágenes se clasifican actualm ente en dos categorí as: libr erí as de
bajo nivel para prog ramador es profesi onales y paquetes de aplicaci ón con
capaci dades li mitadas de perso nali zaci ón. Ambos tipos de aplicaciones están,
generalm ente, pensados para tar eas bási cas de visualización de datos y
'rend ering'. Sin em bargo, mucho s de ellos adolecen de la posibilidad d e efec tuar
análisis numéricos de los m ism os. El Imag e Processi ng Toolbox entra dentro de
la c ategoría d e fami lias de funciones que, d esd e el entorno de trabajo de
MATLAB , permitirá al profesi onal efectuar una exploración exh austiva y desde
un punto de vista matemático de l as imág enes y gráficos que se d eseen tratar o
analizar.
Algunas de las funciones m ás importantes i ncluidas dentro de este toolbox son
las siguientes:

• Análisi s de imágenes y estadí stica.

• Diseño de filtros y r ecuper aci ón de im ágenes.


• Mejora de imágenes.

• Oper aci ones mor fológicas.

• Defi ni ción de mapas d e colores y modificación gr áfica.

• Oper aci ones geom étri cas.


• Transform ación d e imágenes.

• 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.

Esta herramienta tiene el sopor te d e MATLAB 4.2c y SIMU LINK. La librería de


SIMULINK contiene modelos d e capas de redes neuronales de cada tipo de
neurona impl ementada en el toolbox d e r edes neuronales. Es posible por tanto
diseñar sistem as SIMU LINK para simular r edes neuro nales cread as usando esta
herr ami enta. Simplemente, las c apas se conectan de acuerdo con la arquitectura
de la r ed y se propor cionan como entr ada a la c aja de di álogo d e cada capa la
matri z d e peso s apro pi ad a y el vector de desplazamiento. Usando el generador
de código C d e SIMULINK es po sibl e generar autom áti cam ente el códi go
correspondiente a un di seño neuro nal.

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.

2.8 NON LINEAR CONTROL DESIGN TOOLBOX


Se tr ata del pri mer producto comercialm ente disponible en la actuali dad para el
diseño de co ntrol ador es automáticos en entornos de sistem as no lineales. Este
nuevo toolbox está pensado par a ser utilizado exh austi vam ente por ingenieros
que di señan controladores par a ind ustri as avanzadas, destacand o el sec tor del
automóvil, ingenieri a aero espacial, control de proc esos y empresas
petroquímicas. Según i ndica Jim Tung, Vicepresidente d el ár ea de desarrollo de
The MathWorks Group, Inc. "El proceso de aproximación tr adicional en el diseño
de controlador es en sistem as no li neales ha sido hasta la fech a linealizarlos de
algún modo par a aplicar posteriomente un método de diseño lineal que r equiere
de importantes ajustes manuales. El toolbox NCD permi te por pri mera vez a los
ingeniero s de control diseñar dir ectamente sus controladores en un ambiente no
lineal, obviando la aproximaci ón lineal y o tros procedimi entos auxiliares que
antes se nec esi taban de modo imperativo.

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.

El toolbox NCD es un componente avanzado del entorno integrado de desarrollo


que ofr ec en a los especialistas los pro gram as MATLAB y SIMULINK. Por ello,
los diseñador es podrán benefi ciarse d e muchos d e los toolboxes desar rollados
para este entorno en materia de diseño de sistemas lineales.

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.

2.9 NAG FOUNDATION TOOLBOX


Este toolbo x proporciona un acc eso interac tivo, desd e dentro de MATLAB, a un
amplio conjunto de funciones m atemáti cas y estadísticas conteni das en las
clási cas NAG Fortran Libraries d e la em presa The Num erical Algorithms Group
Incorpora más de 200 ficheros M, los cuales cubren un amplio espec tro de ár eas
de inter és, entr e las que cabe destac ar o ptimi zación, ecuaciones di fer encial es
ordinarias y en deri vad as parciales, cuadratur a, estadística, etc. La NAG
Foundati on Toolbox añade tambi én ruti nas concr etas para cam pos específicos
tales como la r esoluc ión de pro blemas con condi ciones de conto rno, problemas
de cuadratur a adaptativa multi dimensi onal, ajuste de cur vas y superfi cies y el
acceso a los algori tm os LAPAC K par a la r esolución d e ec uaciones li neal es. Los
nombr e d e las funciones han sido directam ente tom ados d e las especificaciones
de función clásic a que añade The Num erical Algorithms Group par a sus libr erías.
Como resultado de esto, aquellos usuarios d e las libr erías Fortran de NAG que a
la vez sean usuarios de MATLAB, encontrar an bastante cómodo acc eder a las
rutinas NAG utilizand o la nom enclatur a original.
La NAG Found ation Toolbox es r esultado de la colaboraci ón corporativa que
actualm ente están llevando a c abo The MathWorks Group y The Numerical
Algoriths Group par a pro porci onar un rápido acceso desd e MATLAB a un
importante de r uti nas matem áticas contenidas en l a NAG Foundati on Libr ary.
Actualm ente, este toolbox incorpor a 250 r utinas matemáticas.
Algunas d e las ár eas de cobertur a de la NAG Foundation Toolbox son l as
siguientes:

• Cero s d e polinomios

• Raíces de una o más ecuaciones de tipo tr ascendental.

18
• Suma de series.

• Cuadratur as.
• Ecuaciones difer enciales ordi nari as.

• Ecuaciones difer enciales en derivadas parci ales.


• Estadística no param étrica.

• Análisi s de series tem porales.


• Rutinas d e clasificación.

• Aproximaci ón d e funci ones especiales.

• Aproximaci ón d e curvas y super fi cies.

• Maximi zación y minimización de funciones.

• Fac torización de matrices.


• Valor es y vector es pr opios.

• Resolución de ecuaciones li neales simultáneas.


• Ecuaciones li neal es (L APACK).

• Estadística bási ca.

• Análisi s de corr el ación y r egr esi ones.


• Métodos m ultivariantes.

• Gener aci ón de número s aleatorios.

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:

• los el ementos estén separ ados por blanco s ó comas.

• los el ementos estén c err ados entre corchetes, [ ].


• muestr e el final de cada fila co n ; (punto y coma).

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.

Si la matriz a introducir es muy gr and e se puede utilizar el siguiente form ato:

20
A = [1 2 3
4 5 6
7 8 9]

El comando load y la funci ón fread pueden leer matrices g ener ad as en sesiones


anteriores ó gener ad as por o tros program as.

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.

Después d e crear una variable, pued e presentarse su valo r en pantalla


escribi endo la vari able después del prompt (>>).
>>A
Se pueden r ed efinir variables, por ej emplo:
>>A=[ 1 2 3]
define A como un vector de tres el em entos, A(1)=1, A(2)=2 y A(3)=3. Estos
elem entos deben separase co n espacios en blanco o comas (,).

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 =

-1.3000 1.7321 4.8000

Nos podemos referir a el ementos i ndividuales de la m atri z con í ndices entre


paréntesi s.
Ejemplo: En el ej emplo anterior
x(4) = abs(x(1))
resultaría
x =
-1.3000 1.7321 4.8000 0 1.3000

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

4.2 Instrucciones de MATLAB y Variables


Si omi tes el nombre d e la vari able y el signo "=", MATLAB autom áticam ente crea
la vari able ans para guard ar el resultado. También disting ue las letr as
mayúsculas d e las minúsculas. Todos los nombres d e funci ones deben ser en
letras minúsculas.

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.4 Variables Permanentes


Las variables perm anentes so n aquellas con si gnificado especial, y que no se
pueden eliminar. Estas son por ejem plo las variables ans y eps.
La vari able eps es una tolerancia para determinar. Por ejem plo la singulari dad y
el r ango. Su valor ini cial es la distanci a de 1. 0 al próximo número de punto
flotante m ayor.

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))

4.6 Saliendo y Guardando el Espacio de Trabajo


Par a salir de MATLAB se escri be quit ó exit. Al terminar una sesión d e MATLAB,
las variables en el espacio de trabajo se bor ran. Si deseas guardar tu espacio de
trabajo escribes save.

save guard a todas las vari ables en un archi vo llamado matlab.mat.

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

A(3, 3) = A(1, 3) + A(3, 1)


resultaría
A =
1 2 3
4 5 6
7 8 10

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

diag - extrae ó cr ea una diagonal


tril - parte inferior triangular

t riu - parte superior triangular


' - transpo sici ón

4.8 Operaciones de Matrices


Matrices Transpuestas
El caracter ' (apó str ofe) denota la tr anspuesta d e la m atriz. Si tenemos la
matri z A y llam amos B = A', B es la transpuesta de la m atri z A.

Sumando y Restando Matrices


Las o per aciones sum a (+) y resta (-) son defini das para las m atrices siempr e y
cuando éstas teng an la misma dimensi ón. Es decir, si A y B son matrices 3 x 3,
entonc es A + B se puede calc ular.

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.

X = A\B es una solución a A * X = B

X = B/A es una solución a X * A = B

A\B es defi nido cuando B tiene l a mism a cantidad d e fi las que A. Si A es


cuadrad a, el método usado es la Eliminaci ón Gaussi ana. El resultado es una
matri z X con las mismas dimensiones que B.
Si A no es cuadr ada, se factori za utili zando la or togonalizaci ón de Ho usehold er
con pivoteo de colum nas.

Los factores so n usados par a resolver si stemas d e ecuaciones sub-determ inados


y sobre-d eterminados. El resultado es una matri z X m-por-n donde m es el
núm ero de colum nas de A y n es el número de colum nas de B. Cada colum na de X
tiene, al menos, k componentes di fer entes d e cero , dond e k es el rango efectivo
de A.

B/A esta d efinido en término s d e A\B por B/A = (A'\B') '.

Usando Exponentes con Matrices


La expresión A^n el eva A a la n- ésima potencia y esta d efi nido si A es una
matri z c uad rad a y n un esc alar.

Funciones Matriciales Trascendentales y Elementales


MATLAB consider a expresiones como exp(A) y sqrt(A) como operaciones de
arreglos, d efinidas en los elem entos individ uales de A. También pued e calc ular
funciones trasc end ental es de m atric es, co mo la matriz ex ponencial y la m atri z

27
logarítmica. Estas operaciones especiales están definidas solamente para
matri ces cuadr adas.

Otras funciones elementales de matrices son:


pol y - polinomio carac terístico

det - determinante
trace - traza

kron - producto tensor ial de Kronecker


eig - calcula lo s valor es pro pios d e la m atri z

4.9 Operaciones de Arreglos


El término operaciones d e arr eglo se r efi ere a las oper aciones de aritm éti ca
elem ento por elemento. Un punto (.) antes de un operador indica una oper aci ón
de arreglos elemento por elem ento.

Suma y Resta de Arreglos


Par a sum a y r esta, las oper aciones d e arr eglos y las o peraciones d e matrices son
iguales.

Multiplicación y División de Arreglos


El símbolo .* denota m ultiplicación de arr eglos elem ento por elemento.

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.

4.10 Ejemplos: Operaciones Aritméticas

Ejemplos:
>> 1/2
ans =
0.5000

>> 2\1
ans =
0.5000

>> a=[ 2;1;2]


a =
2
1
2

>> 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*b '


ans =
2 4 6
1 2 3
2 4 6

>> a.*b '


??? Error using ==> .*
Matrix dimensions must agree.

>> 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

Precisión utilizada .- Aproximadam ente 16 dígito s signi ficativo s en


computador as utili zando ari tmética flotante IEEE. El rango aproxi mado es:

10^- 308 a 10^308.

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.

5.1.1 Archivos-M: Comandos y Funciones


Los archivos d e disco que conti enen i nstr ucciones d e MATLAB se llaman
archivos-M. Esto es así porque si empr e tienen una extención de ". m" como la
última par te d e su nombre de archi vo.

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:

% Un archivo-M para calcular los elementos de l a serie de Fibonacci


f = [1 1]; i = 1;
while f (i) + f(i+1) < 1000
f(i+2) = f(i) + f(i +1);
i = i + 1;
end
plot(f)

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.

Los progr am as d e demostr aciones incluidos en MATLAB so n ejemplo s de como


usar comandos par a h acer tar eas m ás com plicadas. Para utilizar estos escriba
demos en el "prom pt" de MATLAB.

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

Veamos alguno s detalles d e mean.m:

La primera línea d eclara el nombre de la funci ón, los argumento s de entrada, y


los argum entos d e sali da. Sin esta línea serí a un archivo d e comando.

% indica que el r esto de la lí nea es un com entari o.


Las prim er as líneas documentan el archivo-M y apar ecen en la pantalla cuando
escribimos help mean.

Las variables m, n, e y so n locales a mean y no existen en el espacio de trabajo.


(O si exi sten, permanecen si n cam bi os.)

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);

Par a ej ecutar l a función, se hace la llam ada en la línea de comandos incluyendo


el par ámetro. La funci ón promedio usa por par ám etro un vecto r. Este vector
debe ser defi nido pr evi amente.
>>A=[ 1 2 4 3 7 5 6 1 2 0 8 5];
>>promedio(A)
ans =
3.6667

MatLab presenta las imágenes en una ventana d e figuras. Al observar el


contenido de dicha ventana l uego de ejecutar la función promedio , se tiene:

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.

5.1.2 Otras funciones


Funciones Matemáticas
Algunas funciones trig onométricas utilizadas por MATLAB so n:

sin - seno
cos - coseno

tan - tang ente

asin - seno i nver so


acos - coseno inverso

atan - tang ente inver sa

Algunas funciones elementales so n:


real(a) Parte r eal

imag(a) Parte imagi nar ia

conj( a) Conjug ado de a


fft(x) Transformada di screta de Fouri er del vec tor x

fft(x,n) FFT de n puntos muestr ales


ifft (x) Transformada inver sa rápida de Fouri er d el vector x

ifft (x,n) FFT inver sa de n puntos muestrados


zeros Inicializa a ceros

zeros( n) Matriz de nxn de ceros

zeros( m,n) Matriz de m xn de ceros


y=zeros(size(A) Matriz del tamaño d e A, todo s ceros

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

pascal Triangulo d e Pascal

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

Producto de dos m atrices triangulares.


Esta factori zación se utiliza para o btener el inver so y el determinante. Tambi én
es la base para la solución de sistem as lineales. Par a obtener la factori zación LU
de A escri bimos,
[ L, U] = l u(A).

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.

Descomposición de Valores Singulares

La descom posición de Valores Si ngular es es i mportante para el análisis de


problemas que envuelvan m atric es.

La asig nación tripl e [ U, S, V] = svd(A) produce lo s tr es factores en la


descom posi ción de valores singular es A = U*S*V'. Las matrices U y V son
ortogonales y la m atri z S es diagonal.
La función svd(A) d evuel ve solamente lo s elemento s d e l a diago nal de S, que son
los valor es singular es de A.

Descomposición de Valores Propios

La Descom posición d e Valor es Propios se utiliza para obtener los valores y


vec tores propi os d e una m atri z cuadr ada A.

La función eig(A) d evuelve los valores propios de A en un vec tor columna.


La asig nación [ X,D]=eig( A) prod uce una matriz di ago nal D cuyos elem entos
diagonales so n los valores propios d e A y las columnas de X so n los vector es
propios correspo ndientes.

Las Funciones de norm a, r ango y acondi cionam iento asociad as so n:

cond - número de condi ción en la norm a 2


nor m - norma 1, norma 2, norma F, norm a

rank - rango
rcond - esti mado del número de condición

Funciones de Funciones

MATLAB repr esenta funci ones matemáticas medi ante archivos-M de ti po


función. Un ejemplo d e una funci ón es el ar chivo-M llamado humps.m.

Ejemplo: El archivo-M llamado humps.m contiene l as sigui entes instrucciones:


function y = humps(x)

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))

Integr aci ón Numérica (Cuadr atur a)


El ár ea bajo l a gráfica d e la función f(x) se pued e aproxi mar integrando f(x)
num éricamente m edi ante una r egla de cuadratura. Para i ntegrar la funci ón
definida por humps.m desde 0 hasta 1 escribimos:
q = quad('humps', 0, 1)
q =
29.8583

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.

Ecuaciones No-lineales y Funciones de Optimización

Las funciones de funciones para ecuaciones no-lineales y optimización incluyen:


fmin - mí nim o de una funci ón de una variable

fmins - m íni mo de una función m ulti-vari able (mi nim ización no-lineal si n
restricciones)

fzero - cero de una función de una variable

constr - minimización con restri cciones

fsolve - solución d e ec uación no-lineal


leastsq - cuadrado s mínimos no-lineales

Funciones para Ecuaciones Diferenciales

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

default tol: ode23 -> 1.0e-03


ode45 -> 1.oe-06

5.1.3 Declaración function


Si ntaxis:
function nombre_ 1=nombre_2(parametro_1, ..., parametro_n)
Ejemplos:
function y=promedio( x)
function i=inodal(t,v)
function xpunt o=vdpol( t,x)
xpunto=zeros( 2,1);
xpunto(1) =x(1).*(1-x( 2).^2)-x(2);
xpunto(2) =x(1);

5.2 Operadores relacionales


Los oper adores r elacionales de M atL ab son:
< m enor que

<= menor o igual a


> m ayor que

>= mayor o igual a

== igual a

=~ no igual a

41
Ejemplo:
if n< maxn
...
if n>=0, break, end

5.3 Operadores lógicos


Los oper adores & , | y ~ son los oper adores de lógica "y", "ó" y "no"
respectivam ente.

El resul tado d e C = A & B es una matri z cuyos elementos so n unos do nde A y B


sean ambo s distinto s de c ero, y c ero s do nd e A ó B sean c ero. A y B deben de ser
matri ces con las mismas dimensiones, a m enos que una de ellas sea un escalar.
El resultado de C = A | B es una m atriz cuyos el em entos so n unos donde A ó B
tienen un elemento diferented e cero, y c eros dond e am bas ti enen elem entos
cero. A y B d eben d e ser matrices con las mi smas di mensiones, a menos que una
sea un escal ar.

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.

Funciónes any, all


La función an y( x) devuelve 1 si cualquier a de los elemento s d e x es difer ente de
cero, d e lo contr ario devuelve 0.

La función all(x) devuelve 1 solam ente si todos los elemento s de x son di ferentes
de cero.

Estas funciones se usan en cláusul as if. Por ejem plo:


if al l(A <.5)
. . .
end
Par a arg umentos m atr iciales, an y y all trabajan por colum nas para d evolver un
vec tor fila co n el r esultado par a c ada columna. Aplicando la función dos veces,
an y(an y(A)), si empre r educe la m atri z a una condición escalar.

Las funciones r elacionales y lógicas en MATLAB so n:

an y - condiciones lógicas

all - condiciones lógicas


find - halla í ndices d e arreglo s de valores ló gicos

exist - verifica si existen variables


isinf - detecta infini to s

42
finite - verifi ca par a los valor es finitos

5.4 Caracteres especiales


Los caracter es especi ales de MatLab so n:

[ ] Se utili zan par a formar vectores y m atr ices


( ) Define precedencia en expr esiones aritméticas. Encierra argumento s de
funciones en forma usual

, Separador de elemento s de una m atri z, argum entos de funciones y


declaraciones en lí neas con d eclaraciones múltiples
; Termi na filas de una matri z, separ ador de declar aciones

% 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

for variable=inicio:f inal


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

it=1; t=0; wo=2.0*pi*60.0;


while it<=npts, ut=si n(wo*t);t =t+dt;end

El ciclo WHILE permi te a una i nstrucci ón, ó grupo d e i nstrucciones, r epetirse un


núm ero ind efinido d e veces, bajo el control de una condici ón lógi ca. El siguiente
ciclo whi le halla el pri m er entero n par a el cual n! es un núm ero de 100 digitos:

n = 1;
while prod(1: n) < 1.0e100, n = n+1; end
n

Un cálculo m ás prácti co ilustrando el ciclo whi le es en el cómputo del


exponencial de una matri z, llam ado expm(A) en MATLAB. Una posible definici ón
de la función ex ponencial es m edi ante l a serie:

expm(A) = I + A + A^2/2! + A^3/3! + ...

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.

5.5.4 Declaraciones IF, ELSE, ELSEIF y BREAK


Si ntaxis
a) if expr esión
proposición 1;
...
proposición n;
end

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

d) if expr esión, break, 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

En el segundo, par tiendo de un entero po sitivo n, si este es par, se divide entre


dos; si es impar, se multiplica por tr es y se le sum a uno. ¿Habrá algún entero
para el cual el proceso nunc a termine? Aquí se ilustr an los enunciados while y i f,
tambi én se muestra la función input (en este caso es una entrad a del teclado), y
el enunciado brea k, que provee salidas abruptas d e los ciclos. Veamos:

% Probl ema "3n+1" clásico de la teoria de números.


while 1
n = input('Entre n, negativo termina. ') ;
if n <= 0, break, end
while n > 1
if rem (n, 2) == 0
n = n/2
else
n = 3*n+1
end
end
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

5.6.2 Cambio del orden de una matriz: reshape


Si ntaxis:
matriz_modificada = reshape(matriz_original, filas, columnas)
Ejemplo
>> A=[ 1 4 7 10; 2 5 8 11; 3 6 9 12]
A =
1 4 7 10
2 5 8 11
3 6 9 12

>> B=reshape(A,2,6)
B =
1 3 5 7 9 11
2 4 6 8 10 12

5.6.3 Modificación individual de elementos


Ejemplos
>> A=[ 1 2; 3 4]
A =
1 2
3 4

>> 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

5.6.4 Modificaciones adicionales de una matriz


Ejemplo
>> A=[ 1 2; 3 4; 5 6 ]
A =
1 2
3 4
5 6

Conver sión d e una matriz en un vec tor

>> 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

Gener aci ón de vectores:


Ejemplos
>> x=1: 5
x =
1 2 3 4 5

>> x=5: -1: 1


x =
5 4 3 2 1

>> x=0: 0.25:1


x =
0 0.2500 0.5000 0.7500 1.0000

Acceso a subm atric es contiguas y no contig uas


Ejemplos

Si la matriz ori ginal A es de 10* 10, entonc es:


A(1:3,5) matri z d e 3x1 que tiene los tr es prim eros elem entos de la colum na 5
de A

A(1:3, 5: 9) matri z d e 3x 4 que ti ene los tr es primeros filas y las columnas de 5 a


9 de A
A(:,5) quinta col umna de A

A(1:5,:) primer as ci nc o fi las d e A


A(:,[4 6])=B(:,1:2) r empl aza la cuar ta y sexta columnas de A con las dos
pri mer as de A

52
Matrices vacias

La declar ación
x = [ ]

asigna una m atri z d e d imensión 0x 0 a x

Par a la matriz A co nsi derada pr eviamente


A(:,[3,5])=[ ] borra columnas 3 y 5 de A

A([3,5 ],:)=[ ] bor ra filas 3 y 5 de A

Declaración d e m atrices com plej as

A=[1 2; 3 4] + i*[5 6 ; 7 8]
o

A=[1 2; 3 4] + i*[5 6 ; 7 8]
o

A=[1+5i 2+6i; 3+ 7i 4+ 8i]

A =
1.0000 + 5.0000i 2. 0000 + 6.0000i

3.0000 + 7.0000i 4.0000 + 8.0000i

Gener aci ón de tablas

>> x=(0.0: 0.2:3.0);


>> y=e xp(-x).*sin(x) ;
>> [ x; y]
ans =
Columns 1 through 7
0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000
0 0.1627 0.2610 0.3099 0.3223 0.3096 0.2807
Columns 8 through 14
1.4000 1.6000 1.8000 2.0000 2.2000 2.4000 2.6000
0.2430 0.2018 0.1610 0.1231 0.0896 0.0613 0.0383
Columns 15 through 16
2.8000 3.0000
0.0204 0.0070

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

Valor es y vector es característicos: eig( A)


>> A=[ 0 7 -6; 1 0 0;0 1 0]
A =
0 7 -6
1 0 0
0 1 0

>> 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

- Exponencial d e una m atriz: e xpm(A)


>> A=[ 0 7 -6; 1 0 0;0 1 0]
A =
0 7 -6
1 0 0
0 1 0

>> expm(A)
ans =
5.2541 11.0757 -13.6115
2.2686 5.2541 -4.8044
0.8007 2.2686 -0.3510

- Factori zación LU de A: lu(A)


>> [ L U] =lu(A)
L =
0 1.0000 0
1.0000 0 0
0 0.1429 1.0000
U =
1.0000 0 0
0 7.0000 -6.0000
0 0 0.8571

55
- Inversa d e A: inv(A)
>> i nv(A)
ans =
0 1.0000 0
0 0 1.0000
-0.1667 0 1.1667

- Ecuación c aracterí stica de la m atriz A: poly(A)


>> p=poly( A)
p =
1.0000 0.0000 -7.0000 6.0000

- Raices de la ecuación car acterística: roots(p)


>> r =roots(p)
r =
-3.0000
2.0000
1.0000

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 ')

5.7.2 Declaración fclose


Si ntaxis
status = fclose(fid)
o
status = fclose (`all') - cierra todos los archiv os abiertos

5.7.3 Declaración fread


Lee un arc hivo abierto con una pr ecisión i ndi cada

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')

5.7.4 Declaración fwrite


Sintaxis
fwrite(fid,A, 'short')

5.7.5 Declaración fprintf


Salida con formato
Ejemplos:
fprintf(fid,'titulo\n');
fprintf(fid,'%f %12.7f\n', y);
Formato

%s - c adena decimal

%d - núm ero d ecimal

%f - punto flotante
% g - form ato g

5.8 Variables globales


Son variables, de las cuales una sola co pia es compartida por el program a
pri ncipal y sus funciones.

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.

Vector es Pr e-Asig nad os


Si no podemos vectori zar un pedazo d e código, podemo s hac er que los ci clos for
vayan más r ápido pr e-asig nando cualquier vector en el cual el r esultado de salida
sea g uardado. Veamos un ejem plo:
y = zeros ( 1,100);
for i = 1:100
y(i) = det(X^i);
end
Si no pre- asi gnamos el vec tor "y", el inter pretador d e MATLAB i rá aum entando
el tam año de "y" por uno cad a vez que se itera en el ciclo.
Permite incr ementar l a velocidad d e proceso de MATLAB
Si ntaxis
variable=inicio:incremento: final
Ejemplo
i=1, wo=2*pi*f o;
for t=0:dt:per
f(i)=sin(wo*t);
i=i+1;
end
ó
t=0:dt :per;
fi=si n(wo* t);

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:

tittl e - añade título a la gr áfica


xlabel - añade encabezamiento al ej e-x

ylabel - añade encabezamiento al ej e-y

text - añade una c adena d e texto en una loc alización específica

gtext - añade tex to a la gr áfica utili zando el rató n


grid - crea líneas entrecortad as

5.10.2 Creando una gráfica


Comando Plot
Si ntaxis:
a) plot ( y)
b) plot (x, y)
c) plot(x, y, 'tipo_línea')
d) plot (x1,y1, 'tipo_línea_1',x2, y2,'tipo_línea_ 2', ... , xn, yn,'t ipo_ línea_n')

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

Sí mbolo Estilo de línea


. punto
o circulo
x marca
+ mas
* asterisco
- sólido
: punteado
-. segmento punto
-- segment o

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+)')

5.10.3 Graficando Matrices


plot(Y)- dibuja una línea par a cad a colum na de Y. El eje-x es encabezado por el
vec tor í ndice d e fila, 1:m, donde m es el número de filas en Y.

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.

5.10.5 Graficando Funciones Matemáticas


Hay difer entes formas de graficar funci ones y = f(x). U na de estas formas es
evaluar la funci ón en m iles de puntos en el inter valo de interés. La siguiente
función osci la infinitamente rápido en el i ntervalo, 0 x 1.

Podemos gráficarla com o sigue:


x = (0:1/2000:1)';
plot(x, cos(tan(pi*x)))
Par a hac er esto más eficiente podemos usar la función fplot la cual conc entra su
evaluación sobre las r egiones donde la r api dez d e cam bio de la función es m ás
grande.

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.

5.10.6 Comandos gráficos

hol d Permi te añadir líneas al di bujo pr evio

on Activa hol d

off Desactiva hold


Ejemplo
plot(x); hold on; plot( y',':');plot( yz, '-. ')

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

fil l( y,x,x) => som br ead o horizontal


fil l( y,x, y) => som br ead o ver tical

5.11 Gráficos en 3 dimensiones


plot3
Dibuja líneas y puntos en 3 dimensi ones

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)

x=-8:0.5,8; y= x; [ x,y]=m eshgri d(x,y);...


R=sqrt(x.^2+ y.^2)+0.001; z=sin(R)./ R;...
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

Ejemplo (matriz de 4*4)


1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1

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 fl at - cada segm ento de la superficie tiene un valor constante


determi nado por el co lor de los punto s extr emos d el segmento o sus esquinas

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

Par a el ejemplo anterior, añadi endo:


shading interp
y posteriormente:
color map(gra y);

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.

El eje y es vertical y es numer ado d e arri ba hacia abajo.


El eje j es horizo ntal y es num erado d e izquierda a d erec ha.

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

axis(`equal') indica que los factor es d e escalamiento y m arc as incrementales a lo


largo d e los ejes x y y son iguales.
axis(`of f') desactiva las etiquetas de los ej es y las m arc as

axis(`on') activa l as eti quetas de los ejes y las m arc as


Par a el ejemplo últi mo:
...
axis([ -3 3 -3 3 -8 8])

fil l3 colorea polí gonos de 3 di mensiones


a) fill3(x, y, z,'c')
b) fill3(x1, y1,z1,...,xn,yn,zn)

Ejemplo
colormap(hot)
fil l3(r and(3,4), rand(3,4), rand(3,4), rand(3,4))

rand matrices y núm er os aleatorios distribui dos uni formem ente


Si ntaxis:
a) rand(n) - mat riz de nxn
b) rnad(m,n) - matriz de mxn

Ejemplo

fil l3(r and(20), rand(20), rand( 20), rand(20))

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

image crea un obj eto imag en y lo presenta


Si ntaxis:
a) image(x)
b) image(x, y,x)
c) presenta la matriz c como una imagen
d) espec ifica los límites de los datos de la imagen en los ejes x e y. En b), x e y
son vectores
Ejemplo
load clown
color map(map)
image(x)

brighten hace más brillante o m ás obscur a la imagen

Si ntaxis:
a) brighten( alf a)
b) brighten( map,alfa)
donde:
0<alfa<1 más brillant e
-1<alfa<0 más obscuro

Del ejem plo anteri or:


...
bright en(0.6)
ó bright en(-0.6)

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)

5.12 Archivos de disco


5.12.1 Manipulación de Archivos de Disco
Alguno s comandos uti lizados par a l a manipulación de archi vo s d e disco son di r,
t ype, delete y cd. Si la extención no se especifica, MATLAB utiliza .m
automáti cam ente. El comando diar y cr ea un diari o de tu sesión de MATLAB en un
archivo d e disco. Par a m ás informaci ón uti liza la Guía d e Referencia de MATLAB
ó el comando help.

5.12.2 Ejecutando Programas Externos


El simbolo "!" le indi ca a MATLAB que el resto d e la línea de entr ada es un
comando para el sistema operativo. Por ej emplo,
! edt darwin.m
invoca un editor llam ado edt en un archivo llamado darwin.m. Luego que este
programa sea completado, el sistem a operativo devuelve el control a MATLAB.

5.12.3 Importando y Exportando Datos


Puedes i ntroducir datos d e o tros pro gramas a MATLAB por varios métodos.
Si milarm ente, puedes ex portar datos de MATLAB a otros program as. También
puedes hac er que tus progr amas m anipulen datos directam ente en archivo s-MAT,

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.

5.13 INDICE ALFABETICO


axis, all, any, bar, br eak, brighten, clf, for, colormap, conj, co ntour, co ntour3,
det, di ag, else, elseif, eig, ex pm, fclose, fi ll, fill3, fft, fftn, function, fo pen,
fplot, fread, fwrite, grid, gtext, h adam ar d, hold, if, ifft, ifftn, imag, image,
inv, loglog, load, lu, mesh , meshc, meshz, mesh grid, ode23, ode45, peaks, plot,
plot3, poly, r eshape, rot90, sph er e, tril, triu, pasc al, polar, r eal, topli tz, rand,
reshape, semilog, semilogy, shadi ng (flat i nterp fac eted), si ze, sound, stairs,
subplot, surf, surfc, surfl, tex t, title, xlabel, ylabel , while, zeros.

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.

Si muli nk usa diagramas d e bloques par a representar sistemas di námi cos.


Mediante una interface gráfica con el usuario se pued en arr astr ar los
componentes desd e una libr ería d e bloques existentes y luego interconectarlos
mediante conector es y alam bre. La ventana pri ncipal de Simulink se activa
escribi endo simulink en la lí nea de com ando s de M atL ab, y se muestra a
continuación:

Haciendo doble click en cualquiera d e las librerías pr esentes en esta ventana se


abrir á otr a ventana conteni endo una cantidad de bloques r elativos a dicha
librería.

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.

Por ej emplo, al gener ador seno se le puede modificar su am plitud, fr ecuenci a y


fase. Al osciloscopio se le definen las esc alas horizontal y vertical.
Par a ejec utar el pro g rama se usa la opción simulatio n en el menú de l a ventana
del archivo-m creado.

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.

Existen num erosos bloques y funciones i ncorporados en las librerías de si muli nk


que pued en ser em pleados par a simul ar cualquier sistema.

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.

6.2 Generador de código-C en Simulink


Una vez se h a creado un modelo dinámic o en Simulink, se puede i nvocar el
generador d e código-C que permi te c onvertir el diagrama de bloques
implementado en un c ódigo C. Este pued e ser útil para varios pr opósitos: puede
ser usado par a contr ol en tiem po real, si mulación en tiem po r eal o simulaci ón
aceler ad a en tiempo no real. Sus aplicaciones pueden ser co ntrol de movimiento,
control de procesos, sistem as automotor es, equi pos m édicos, robó tica, etc.

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

7.1 General purpose commands:


Managi ng comma nds a nd functi ons:
help - On-line docum entation.

what - Dir ectory listing of M-, MAT- and MEX-fi les.


type - List M-file.

lookfor - Keyword search through th e HELP entries.

which - Locate functions and files.


demo - Run demos.

path - Co ntrol MATLAB's search path.

Managi ng varia bles a nd the workspac e:


who - Li st curr ent variables.

whos - List current variables, lo ng form.

load - R etrieve variables from disk.


save - Save wor kspace vari ables to di sk.

clear - Clear vari ables and functions from memory.


pac k - Co nsolidate wo rkspac e memor y.

size - Size of matrix.


length - Length of vec tor.

disp - Display matrix or text.

Working with files and th e operating sy stem:

cd - Change curr ent worki ng director y.


dir - Directory li sting.

delete - Del ete fi le.


getenv - G et environm ent value.

! - Execute o perating system command.

uni x - Execute operating system command & return result.

diary - Save text o f MATLAB session.

78
Controlli ng the command wi ndow:
cedit - Set command li ne edit/r ec all facili ty par ameter s.

clc - Clear command wi ndow.


home - Send cursor home.

format - Set output format.


echo - Echo com mands i nside scri pt files.

more - Control pag ed output in comm and window.

Starting and qui tting from MATLAB:

qui t - Terminate MATLAB.


startup - M-file ex ecuted wh en MATLAB is invo ked.

matlabrc - Master startup M-file.

General i nform ation:

info - Inform ati on about MATLAB and Th e MathWorks, Inc.


subscribe - Becom e subscribi ng user of MATLAB.

hostid - MATLAB server ho st i dentification number.


whatsnew - Inform ati on about new features not yet documented.

ver - MATLAB, S IMULINK, and TOO LBOX ver sion i nformation.

Opera tor s a nd special character s:

Char N ame HELP to pic


+ Plus arith

- Minus arith
* Matrix multi pli cation arith

.* Array multiplicati on ari th


^ Matrix power arith

.^ Array pow er arith

\ Bac kslash or left division slash


/ Slash or right divi si on slash

./ Array division slash

79
kro n Kro nec ker tensor product kron

: Colon colon
( ) Parentheses par en

[ ] Brac kets paren


. Decimal point punc t

.. Parent director y punct


... Continuation punc t

, Comma punct

; Semi colon punct

% Comm ent punct

! Exclamation poi nt punct


' Transpo se and quote punct

= Assignm ent punct


== Equality r elop

< > Rel ational oper ator s r elop

& Logi cal AND relo p


| Logical OR relo p

~ Logical N OT relop
xor Logical EXCLUSIVE OR xor

Logical characteristics:

exist - Check if variables or functions ar e defined.

any - True if any el em ent of vec tor is tr ue.


all - True if all elem ents of vec tor are true.

find - Find i ndices o f non- zero elem ents.


isnan - True fo r Not-A-Number.

isinf - True for i nfinite elem ents.


finite - True for finite elem ents.

isempty - True for em pty m atrix.

isspar se - True for spar se m atrix.


isstr - True for text string.

isglobal - True for global variables.

80
Control S ystem Toolbox Commands :

Model building :
append - Append system dynamics.

aug state - Augment states as outputs.


blkbuild - Build state- spac e system from blo ck diagram.

cloop - Close loops of system.

connect - Block di agram modeling.

conv - Co nvolution of two polynomials.

destim - Form discrete state estimator from gain m atrix.


dreg - Form di screte controller/esti mator from gai n matrices.

drmodel - Generate random discrete model.


estim - Form continuo us state estimator fr om gain matrix.

feedback - Feedback system connection.

ord2 - Gener ate A,B,C,D for a second-order system.


pad e - Pad e approximation to time delay.

parallel - Parallel system connection.


reg - Form conti nuous controller/esti mator from gai n matri ces.

rmodel - Gener ate r andom conti nuous model.


series - Series system connection.

ssdelete - Delete inputs, outputs, or states from model.

ssselect - Select subsystem from larg er system.

Model conversions>:
c2d - Co nti nuous to discrete-time conversio n.

c2dm - Continuo us to discrete-time co nversion with method.


c2dt - Co ntinuous to d iscrete conversion with delay.

d2c - Discrete to continuous-time conversio n.

d2cm - Discr ete to co ntinuous-time conversion with method.


poly - Roots to polyno mial conver sion.

residue - Partial fr action ex pansi on.

81
ss2tf - State-space to transfer func tion conversion.

ss2zp - State-spac e to zero-pole conversion.


tf2ss - Transfer func ti on to state- spac e co nversion.

tf2zp - Tr ansfer function to zero- pole conver sion.


zp2tf - Z ero-pole to transfer function conver sion.

zp2ss - Z ero-pole to state- space conversion.

Model reduction :
balr eal - Balanced r ealization.

dbalr eal - Discr ete balanced realization.

dmodred - Discrete m odel order red uction.


minreal - Minimal realizatio n and pole-zero canc ellation.

modred - Model order reduc tion.

Model realizations :
cano n - Cano nical for m.
ctrbf - Co ntrollability stai rcase form.

obsvf - Observabili ty stai rcase form.


ss2ss - Apply similarity tr ansfo rm.

Model properties :
covar - Co nti nuous covari ance r esponse to w hite noise.

ctrb - Co ntrollabi lity matrix.


damp - Dampi ng facto rs and natural frequencies.

dcgain - Co ntinuous steady state (D.C.) gain.


dcovar - Discr ete covari ance r esponse to w hite noise.

ddamp - Discrete d am ping fac tors and natural fr equencies.


ddcgain - Di scr ete steady state (D.C.) gain.

dgram - Discr ete co ntrollability and o bser vability gr amians.

dsort - Sort discr ete eigenvalues by m agnitude.


eig - Eigenvalues and eigenvec tors.

esor t - Sort continuous ei genvalues by r eal part.

82
gram - Co ntrollability and o bser vability gr ami ans.

obsv - Obser vabi lity matrix.


pri ntsys - Display system in fo rmatted for m.

roots - Polynomi al roo ts.


tzero - Transmission zeros.

tzero2 - Transmission zeros usi ng r andom perturbation m ethod.

Ti me response:

dimpulse - Discrete unit sample r esponse.

dini ti al - Discrete i nitial condition response.

dlsim - Discrete si mulation to ar bitrary inputs.


dstep - Di screte step response.

filter - SISO z-tr ansform simulati on.


impulse - Im pul se r esponse.

initial - Continuous i nitial condition r espo nse.

lsim - Continuous si mulation to ar bitrar y inputs.


ltitr - Low level time response function.

step - Step r espo nse.


stepfun - Step functi on.

Frequency respo nse:

bode - Bode plot (fr equency r espo nse).

dbode - Discr ete Bode plot (frequency r esponse).


dnichols - Discr ete Nichols plot.

dnyquist - Di screte N yquist plo t.


dsi gma - Di scr ete si ng ular value fr equenc y plot.

fbode - Fast Bod e plo t for continuo us systems.


freqs - Laplace-tr ansform frequenc y respo nse.

freqz - Z-transform frequenc y response.

ltifr - Low level frequency r esponse function.


margin - Gai n and phase m argi ns.

nichols - Nichols plot.

83
ngrid - Draw grid lines for Nichols plot.

nyquist - Nyquist plot.


sigma - Singular value frequency plot.

Root locus:

pzmap - Pole-zero m ap.


rlocfind - Inter active root locus gain deter mination.

rlocus - Evans root-locus.

sgrid - Draw conti nuo us root loc us wn,z gri d.

zgrid - Dr aw discr ete root locus wn,z grid.

Gain selection:

acker - SISO pole placement.


dlqe - Discr ete linear -quadratic estimator desig n.

dlqew - General discrete linear quadr atic estim ator desi gn.

dlqr - Discrete li near- quadratic reg ulator d esig n.


dlqry - Di scr ete reg ulator desi gn with weig hting on outputs.

lqe - Li near-quadratic estimator d esign.


lqed - Discr ete estimator design from conti nuous co st func tion.

lqe2 - Linear quadr ati c estimator design using Schur method.


lqew - Gener al linear- quadratic estimator desig n.

lqr - Linear-quad ratic reg ulator design.

lqrd - Discrete regulator design from conti nuous cost func ti on.
lqry - Regulator desig n with w eighti ng o n outputs.

lqr2 - Linear quadratic regulato r design usi ng Schur method.


place - Pol e plac ement.

Equation solution:

ar e - Algebr aic Riccati equation solution.

dlyap - Discr ete Lyapuno v equation solution.


lyap - Continuous Lyapunov equati on solution.

lyap2 - Lyapunov equation solution using di agonalization.

84
Demonstrations:
ctrldemo - Introduction to the Co ntrol Toolbox.

boildemo - LQG desi gn of boiler system.


jetd em o - Classical d esign of j et transport yaw damper.

diskd emo - Di gital control desi gn o f hard disk controller.


kalmdemo - Kalman fil ter design and simulation.

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:

En MatLab debe definirse el numer ador Y(s) y el denominador U(s) como


vec tores, cuyos elementos son lo s co eficientes d e los polinomios del num erador
y del denomi nador en potencias d ecreci entes de S. Por ejem plo, para defi nir la
función de tr ansfer encia:

>>y=[1];

>>u=[1 0.25 1];

Par a determinar la r espuesta en el ti empo para una entrada escalón unitario de


este si stem a se usa el comando s step indic ando el vector del numerado r y del
denominador entr e paréntesis. step(num,den)
>>step(y, u)

MatLab presenta la r espuesta en el tiempo en la ventana de figur as:

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)

Se define t com o un vector cuyo elem ento inici al es 0, su elemento final es 20 y


existen elem ento s que son el incr emento desde 0 hasta 20 d e 0.1 en 0.1. Al
ejecutar el comando step para y y u se o btiene en la ventana de fig uras la
respuesta escaló n par a los primero s 20 seg undos.

Otra form a de definir el si stem a en MatLab es usando las ec uaciones de estado


de la form a:

x = Ax + Bu
y = Cx + Du

MatLab permi te hacer la conver sión de una función de transferenci a a su


equivalente en ec uaci ones de estado, mediante el comando tf2ss. Se d eben
especificar las cuatro matrices d e estado de la forma:

[A,B,C,D]=tf2ss( num,den)

Par a el ejemplo anterior tenem os:


>>[a,b,c,d]=tf2ss(y,u)

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

Par a obtener la respuesta esc alón de un sistema a partir de l as ecuaciones de


estado se usa el

comando step con la


Si ntaxis:
step(A,B,C, D)

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)

Si por el contrario el si stema se define en MatLab por las ecuaciones d e estado:


» [ A,B,C,D]=tf2ss( y,u)
A =
-6 -11 -6
1 0 0
0 1 0

88
B =
1
0
0
C =
1 5 4
D =
0
» impulse(A,B,C,D)

En ambo s c asos, MatLab presenta l a r espuesta en el tiempo en la ventana de


figuras:

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.

Par a o btener la respuesta en el tiem po para una función rampa, se define U de la


siguiente form a:
>>T=0:0.1:10
>>U=T;
>>NUM=[ 1];
>>DEN=[ 1 0.25 1];
>>[ Y,X]=lsim(NUM,DEN,U,T);
>>PLOT(T,Y,T,U)

Al hac er U=T se está d efi niendo la función r ampa. T es el vector d e ti empo


vari ando d esde 0 hasta 10

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];

>>u=[1 0.25 1];


>>bode(y,u)

MatLab presenta el di agr ama d e bode en la ventana de figur as:

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.

Si se define y com o el vector d e los coeficientes d el polinom io del numerador y


u como el deldenominador:
>>y=[ 0 0 100];
>>u=[ 0.04 1 0];
>>nichols( y,u)

MatLab presenta en la ventana de figuras el diagram a d e Ni chols:

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).

[Gm,Pm,Wcg,Wc p] = M ARG IN(NUM ,DEN) cuando se trabaja con la función de


transfer encia.

[Gm,Pm,Wcg,Wc p] = M ARG IN(MAG,PH ASE,W) toma los vector es de m ag nitud,


fase y frecuencia del diagram a de Bod e.

M ARGIN(A,B,C,D) dibuja el diagr am a d e Bo de y muestra con lí neas verticales los


márgenes deg anancia y de fase.

>>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:

Se debe determinar su ecuación car acterística, la cual es de la fo rma:

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

R = rlocus(NUM,DEN,K) o [R,K] = rlocus(NUM,DEN) no di buj a el lugar de las


raíces pero alm acena en la matri z R, d e longi tud igual al núm ero de elem ento s de
K, la loc alización d e las raíces. R tendr á tantas colum nas como raíces existan,
estas pueden ad emás ser com plej as.

rlocus(A,B,C,D), R=rlocus(A,B,C,D,K), o [R,K ]=rlocus(A,B,C,D) so n equi valentes a


las Sintaxi s anteri ores pero empleando l as matrices de estado par a hallar el
lugar de l as raíces.

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:

[K,POLES] = rlocf ind(num, den) permite determinar lo s polos para un valor


determi nado de k, cuando se trabaja con la función de tr ansfer encia. Por medio
del cur so en el lug ar de las raíces se selecciona una localización, MatLab r etor na
el valor d e k para esta locali zación y los polo s asoci ados a esta g ananci a.

Cuando se trabaja co n las matrices d e estado, las Sintaxi s para el comando


rlocfind es: [K,POLES] = rl ocfind( A,B,C,D).
Al ejecutar el com ando rlocfind con la funci ón de tr ansfer encia anterior, MatLab
activa la ventana d e figuras en espera de que el usuario seleccio ne un punto del
lugar de las raíces mediante el cursor. En este c aso el punto seleccionado fue -
2.4623 en la parte real y - 0. 0132 en la parte imagi nari a.
» [ k,pol es]=rlocfind( num,den)
Select a point in the graphics window
selected_point =
-2.4623 - 0.0132i
k =
1.6655
pol es =
-2.4625
-0.2688 + 0.7773i
-0.2688 - 0.7773i

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.

El controlador PID es C(S)=Kp + Ki/S + Kd S que se r epresenta como:

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)

Se usa el com ando conv para obtener la convolución y m ultiplicación polinomial de


dos vector es. La salida obteni da mediante el comando step se muestra a
continuación:

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

Par a r emover ejes d e la gr áfica:


>>set(gca,'Vi sibl e','off ')
o simplem ente
>>axis off

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.

Par a establecer pro piedades de la gr áfica, es m ás fácil h acerlo al crearla que


después. Por ejem plo, para graficar con una línea gruesa,
>>plot(x,y,'l inewidt h',3) (En el momento de creación)

>>set(get(gca,'children'),'l inewidt h',3) (Después de cr ead a)

100
101

También podría gustarte