Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Matlab
Tutorial Matlab
TUTORIAL DE MATLAB
1. QU ES MATLAB?
1.1 Uso de Matrices
1.2 Origen de MatLab
1.3 Plataformas
1.4 Productos
4
5
5
5
5
2 . 1 S I G N A L P R O C E S S I N G TOOLBOX
7
8
8
9
9
9
9
9
9
10
10
10
10
10
2.3 THE
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
11
11
12
12
12
13
13
2 . 5 O P T I M I Z A T I O N T O O LBOX
14
2 . 6 I M A G E P R O C E S S I N G TOOLBOX
15
16
17
18
3. INICIANDO MATLAB
20
4. USO DE COMANDOS
4 . 2 I n s t r u c c i o n e s d e M A T L A B y V a r i a b les
4.3 Obteniendo Informacin del Espacio de Trabajo
4.4 Variables Permanentes
4.6 Saliendo y Guardando el Espacio de Trabajo
4. 7 M a n i p u l a c i n d e V e c t o r e s y M a t r i c e s
4.8 Operaciones de Matrices
4.9 Operaciones de Arreglos
4.10 Ejemplos: Operaciones Aritmticas
20
22
23
23
23
24
25
28
29
5 . P R O G R A M A N D O C O N MATLAB
5.1 Generalidades
5.1.1 A r c h i v o s -M : C o m a n d o s y F u n c i o n e s
5.1.2 Otras funciones
5.1.3 Declaracin function
5.2 Operadores relacionales
5.3 Operadores lgicos
5.4 Caracteres especiales
5.5 Control de flujo
5.5.1 Declaracin FOR simple
5.5.2 Declaracin FOR anidada.
5.5.3 Declaracin WHILE
5.5.4 D e c l a r a c i o n e s I F , E L S E , E L S E I F y B R E A K
5.6.1 C r e a c i n d e u n a m a t r i z
5.6.2 C a m b i o d e l o r d e n d e u n a m a t r i z : reshape
5.6.3 M o d i f i c a c i n i n d i v i d u a l d e e l e m e n t o s
5.6.4 M o d i f i c a c i o n e s a d i c i o n a le s d e u n a m a t r i z
5.7.1 Declaracin f o p e n
Ejemplo
5.7.2 Declaracin f c l o s e
5.7.3 Declaracin f r e a d
5.7.4 Declaracin fwrite
5.7.5 Declaracin f p r i n t f
5.8 Variables globales
5.9 Vectorizacin de algoritmos y estructuras (for, while)
5.10 Grficas en Dos Dimensiones
33
33
33
37
41
41
42
43
44
44
45
46
47
50
50
50
51
57
57
57
57
58
58
58
59
60
COMANDO PLOT
Smbolo Color
Smbolo Estilo de lnea
5.10.6 Comandos grficos
5.11 Grficos en 3 dimensiones
5.12 Archivos de disco
5.12.1 M a n i p u l a c i n d e A r c h i v o s d e D i s c o
5.12.2 Ejecutando Programas Externos
5.12.3 I m p o r t a n d o y E x p o r t a n d o D a t o s
5.13 INDICE ALFABETICO
60
60
61
63
66
73
73
73
73
74
6. S I M U L I N K
6.1 Acelerador de Simulink
6 . 2 Ge n e r a d o r d e c d i g o - C en Simulink
75
77
77
7. COMANDOS DE MATLAB
7.1 General purpose commands:
C o n t r o l S y s t e m T o o l b o x C o m m a n d s:
78
78
81
2
8. APLICAN D O M A T L A B A L C O N T R O L DE PROCESOS
8.1 Respuesta en el dominio del tiempo
8.2 Respuesta en el dominio de la frecuencia
8.3 Lugar de las races
8.4 Controladores PID
86
86
91
95
97
9. TRUCOS EN MATLAB
Paper semilogartmico gratis: papelbod.m
99
99
1. QU ES MATLAB?
MatLab e s u n p r o g r a m a i n t e r a c t i v o p a r a c o m p u t a c i n n u m r i c a y v i s u a l i z a c i n d e
datos. Es ampliamente usado por Ingenieros de Control en el anlisis y diseo,
posee adems una extraordinaria versatilidad y capacidad para resolver
problemas en matemtica aplicada, fsica, qumica, ingenier a, finanzas y muchas
otras aplicaciones. Est basado en un sofisticado software de matrices para el
anlisis de sistemas de ecuaciones. Permite resolver complicados problemas
numricos sin necesidad de escribir un programa.
MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente
integrado orientado para llevar a cabo proyectos en donde se encuentren
implicados elevados clculos matemticos y la visualizacin grfica de los
mismos.
MATLAB integra anlisis numrico, clculo matricial, proceso de seal y
visualizacin grfica en un entorno completo donde los problemas y sus
soluciones
son
expresados
del
mismo
modo
en
que
se
escribiran
tradicionalmente, sin necesidad de hacer uso de la programacin tradicional.
El nombre de MATLAB proviene de la contraccin de los trminos MATrix
LABoratory y fue inicialmente concebido para proporcionar fcil acceso a las
libreras LINPACK y EISPACK, las cuales representan hoy en dia dos de las
libreras ms importantes en computacin y clculo matricial.
M AT L A B e s u n s i s t e m a d e t r a b a j o i n t e r a c t i v o c u y o e l e m e n t o b s i c o d e t r a b a j o
son las matrices. El programa permite realizar de un modo rpido la resolucin
numrica de problemas en un tiempo mucho menor que si se quisiesen resolver
estos mismos problemas con lenguajes de programacin tradicionales como
pueden ser los lenguajes Fortran, Basic o C.
MATLAB goza en la actualidad de un alto nivel de implantacin en escuelas y
centros universitarios, as como en departamentos de investigacin y desarrollo
de muchas c o m p a a s i n d u s t r i a l e s n a c i o n a l e s e i n t e r n a c i o n a l e s . E n e n t o r n o s
universitarios, por ejemplo, MATLAB se ha convertido en una herramienta
bsica, tanto para los profesionales e investigadores de centros docentes, como
una importante herramienta para la imparticin de cursos universitarios, tales
como sistemas e ingenieria de control, lgebra lineal, proceso digital de imagen,
seal, etc. En el mundo industrial, MATLAB est siendo utilizado como
herramienta de investigacin para la resolucin de complejos prob l e m a s
planteados en la realizacin y aplicacin de modelos matemticos en ingeniera.
Los usos ms caractersticos de la herramienta los encontramos en reas de
computacin y clculo numrico tradicional, prototipaje algortmico, teora de
c o n t r o l a u t o m tico, estadstica, anlisis de series temporales para el proceso
digital de seal.
1.3 Plataformas
MatLab est disponible para una amplio nmero de plataformas: estaciones de
trabajo SUN, Apollo, VAXstation y HP, VAX, MicroVAX, Gould, Apple Macintosh
y PC AT compatibles 80386 o
superiores. Opera bajo sistemas operativos
UNIX, Macintosh y Windows.
1.4 Productos
La empresa MathWorks ofrece MatLab como su principal producto para
c o m p u t a c i n n u m r i c a , a n l i s i s y v i su a l i z a c i n d e d a t o s . T a m b i n o f r e c e S i m u l i n k
Butterworth,
Chebyschev
tipo
I,
Algebra lineal.
Matrices especiales.
Polinomios e interpolacin.
Entradas y Salidas.
(Nota: Las funciones del tipo Handle Graphics no estn incluidas en la C Math
Library).
Polinomios e interpolacin
Interpolacin 1 - D y 2 - D.
Construccin polinomial.
Interpolacin por splines cbicos.
Diferenciacin de polinomios.
Evaluacin de polinomios.
Multiplicacin y divisin de polinomios.
Residuos de polinomios y residuos.
2.2.5 Utilidades
Gestin y mantenimiento de errores.
Conversin de tipos de datos Fortran.
Funciones de fecha y hora.
Clasificacin de matrices.
Conversin de n m e r o s a c a d e n a s y v i c e v e r s a .
2.2.6 Requerimientos
La libreria MATLAB C Math Library cumple con la normativa estndar ANSI
para compiladores C.
Finalmente, la librera trabajar con aquellos enlazadores
suministrados con la mayora de compiladores ANSI C.
que
vienen
10
Tratar todas las variables en ficheros como datos enteros y/o reales.
Utilizar una variable concreta como variable escalar, vectorial, entera, real o
una combinacin de estas.
12
determinantes,
autovalores
formas
Existen dos versiones del mismo Toolbox. The Basic Symbolic Math Toolbox es
una coleccin de ms de 50 funciones MATLAB las cuales permiten acceder al
13
Programacin lineal.
Programacin cuadrtica.
14
Diseo de filtros.
Transformaciones 2D.
E l p r o c e s o d e i m g e n e s e s u n c a m p o d e t r a b a j o a b s o l u t a m e n te c r u c i a l p a r a
aquellos colectivos e industrias que estn trabajando en reas como diagnstico
mdico, astronoma, geofsica, ciencia medioambientales, anlisis de datos en
laboratorios, inspeccin industrial, etc. Los programas actuales de procesado y
anlisis de imgenes se clasifican actualmente en dos categoras: libreras de
bajo nivel para programadores profesionales y paquetes de aplicacin con
capacidades limitadas de personalizacin. Ambos tipos de aplicaciones estn,
generalmente, pensados para ta reas bsicas de visualizacin de datos y
'rendering'. Sin embargo, muchos de ellos adolecen de la posibilidad de efectuar
anlisis numricos de los mismos. El Image Processing Toolbox entra dentro de
la categora de familias de funciones que, desde el ento rno de trabajo de
MATLAB , permitir al profesional efectuar una exploracin exhaustiva y desde
un punto de vista matemtico de las imgenes y grficos que se deseen tratar o
analizar.
Algunas de las funciones ms importantes incluidas dentro de este toolbo x s o n
las siguientes:
Mejora de imgenes.
Operaciones morfolgicas.
Operaciones geomtricas.
Transformacin de imgenes.
Proceso de bloques
15
Dentro de las aplicaciones bsicas de este toolbox, cabe destacar aquellas que
estn orientadas a aquellas que se enmarcan dentro del campo de la industria
aeroespacial y automocin (simulacin, sistemas de control, autopilotaje), banca,
defensa (reconocimiento de patrones, procesamiento de seales, identificacin
de imgenes, extraccin de caractersticas, compresin de datos), electrnica
(control de procesos, anlisis de errores, modelado no lineal, sntesis de voz,
visin por ordenador), economa (anlisis financiero, anlisis predictivo),
industria (control de procesos, identificacin en tiempo real, sistemas de
inspeccin), medicina, robtica (control de trayectorias, sistemas de visin),
reconocimiento y sntesis del habla, telecomunicaciones (control de datos e
imgenes, servicios de informacin automatizada, traduccin del lenguaje
hablado en tiempo real, diagnosis, sistemas de enrutamiento), etc. El toolbox
contiene muchos ejemplos de al g u n a s d e e s t a s a p l i c a c i o n e s .
17
Ceros de polinomios
18
Suma de series.
Cuadraturas.
Estadstica no paramtrica.
Rutinas de clasificacin.
Factorizacin de matrices.
Estadstica bsica.
Mtodos multivariantes.
19
3. INICIANDO MATLAB
Despus de ejecutar el programa MatLab desde el sistema operativo empleado,
por ejemplo haciendo doble click sobre el icono de MatLa b e n a m b i e n t e s
Windows, aparece el indicador de comandos el cual est listo para recibir
instrucciones en lenguaje MatLab. Este indicador es de la siguiente forma:
>>
Al iniciar el uso de MatLab estn disponibles dos comandos de ayuda y
demostracin. Para e j e c u t a r l o s s e e s c r i b e e l c o m a n d o e n l a l n e a d e c o m a n d o s
despus del smbolo >> y se presiona la tecla Enter. Por ejemplo:
>>help
permite obtener una ayuda sobre los diferentes comandos de MatLab.
>>demo
h a c e u n a d e m o s t r a c i n d e l a s d i f e r e n t e s a p l i c a c i o n es de MatLab.
Para cerrar o finalizar el uso de MatLab se usa el comando quit .
>>quit
4. USO DE COMANDOS
La primera forma de interactuar con MatLab es a travs de la lnea de
comandos. Puede ejecutarse un comando si este est escrito despus del smbolo
>> y se presiona la tecla Enter.
MATLAB trabaja esencialmente con matrices numricas rectangulares. La
manera ms fcil de entrar matrices pequeas es enumerando los elementos de
sta de tal manera que:
Ejemplo:
A = [ 1 2 3; 4 5 6; 7 8 9 ]
resultara en la matriz
A=
1 2 3
4 5 6
7 8 9
MATLAB guarda esta matriz para utilizarla luego bajo el nombre de A.
Si la matriz a introducir es muy grande se puede utilizar el siguiente formato:
20
A = [1 2 3
4 5 6
7 8 9]
El comando load y la funcin fread p u e d e n l e e r m a t r i c e s g e n e r a d a s e n s e s i o n e s
anteriores generadas por otros programas.
Ya que MatLab se basa en el lgebra de matrices como ejemplo crearemos una
matriz. Estas pueden estar formadas por un slo elementos (escalar), por una
fila o una columna (vector) o por una serie de filas y columnas (matriz
propiamente dicha).
>>A=1
define A como un escalar de valor 1. Al definir A automticamente MatLab
presenta en pantalla su valor.
A=
1
Para no presentar el valor de la variable creada, debe agregarse punto y coma
(;) al final del comando.
Despus de crear una variable, puede presentarse
escri biendo la variable despus del prompt (>>).
su
valor
en
pantalla
>>A
Se pueden redefinir variables, por ejemplo:
>>A=[1 2 3]
define A como un vector de tres elementos, A(1)=1, A(2)=2 y A(3)=3. Estos
elementos deben separase con espacios en blanco o comas (,).
Para definir una m a t r i z s e d e b e n s e p a r a r l a s f i l a s c o n p u n t o y c o m a ( ; ) o c o n
retorno (Enter).
>>A=[1 2 3; 4 5 6]
o
>>A=[1 2 3
4 5 6]
ambos comandos producen el mismo efecto:
A=
1 2 3
4 5 6
21
22
4.5 Funciones
Las funciones que utiliza MATLAB son intrnsecas al procesador de ste. Otras
f u n c i o n e s e s t n d i s p o n i b l e s e n l a l i b r e r a e x t e r n a d e a r c h i vo s -M . A d e m s d e
stas funciones todo usuario tambin puede crear otras funciones. Puedes
combinar las funciones de acuerdo a tu necesidad.
Ejemplo:
x = sqrt(log(z))
23
ndices
Podemos referirnos a elementos individuales de matrices encerrando sus ndices
en parntesis.
Ejemplo:
A=
1 2 3
4 5 6
7 8 9
24
Manipulacin de Matrices
diag - extrae crea una diagonal
t r i l - parte inferior triangular
triu - parte superior triangular
' - transposicin
25
y = x - 1
resultara
y =
-2
-1
1
Ejemplo:
>>A=[1 2 3;4 5 6]; B=[6 5 4; 3 2 1];
define las matrices A y B. Para sumarlas se escribe la operacin:
>>A+B
El resultado de la operacin es por defecto almacenado en la variable ans e
inmediatamente presentado en pantalla:
ans =
7 7 7
7 7 7
Para almacenar la suma de A y B en la variable C:
>>C=A+B
C=
7 7 7
7 7 7
Multiplicando Matrices
La operacin de multiplicacin de matrices est definida siempre que el nmero
de columnas de la primera matriz sea igual a el nmero de filas de la segunda
matriz.
Producto escalar
El producto interior (producto escalar producto punto) se consigue de la
siguiente manera:
x' * y
asumiendo que x y y son vectores columnas. Note que y' * x produce el mismo
resultado.
26
Dividiendo Matrices
En divisin de matrices, si A es una matriz cuadrada no- s i n g u l a r , e n t o n c e s A\B y
B/A corresponden a la multiplicacin izquierda y derecha de B por el inverso de
A, esto es, inv(A) * B y B * inv(A) respectivamente. El resultado es obtenido
directamente sin la computacin del inverso.
27
especiales
estn
definidas
solamente
para
28
>> 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
Precisin
utilizada .-
Aproximadamente
16
dgitos
significativos
computadoras utilizando aritmtica flotante IEEE. El rango aproximado es:
en
1 0 ^-3 0 8 a 1 0 ^ 3 0 8 .
Formatos de salida :
4/3
a) format short
1.3333
b) format short 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
Archivos de Comandos
Cuando un archivo de comandos es invocado, MATLAB simplemente ejecuta los
comandos encontrados en dicho archivo. Las instrucciones en un archivo de
comando operan globalmente en los datos en el espacio de trabajo. Los comandos
son utilizados para hacer anlisis, resolver problemas, disear secuencias
33
% U n a r c h i v o -M p a r a c a l c u l a r l o s e l e m e n t o s d e l a s e r i e d e F i b o n a c c i
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)
Archivos de Funciones
Un archivo - M q u e c o n t i e n e l a p a l a b r a f u n c ti o n a l p r i n c i p i o d e l a p r i m e r a l n e a , e s
un archivo de funcin. En una funcin, a diferencia de un comando, se deben de
pasar los argumentos. Las variables definidas y manipuladas dentro de la funcin
son locales a esta y no operan globalmente en el espacio de trabajo. Los archivos
de funciones se utilizan para extender a MATLAB, i.e., crear nuevas funciones
para MATLAB utilizando el lenguaje propio de MATLAB.
El archivo m e a n . m contiene las instrucciones:
function y = mean(x)
% Valor medio.
% Para vectores, mean(x) retorna el valor medio de los elementos del vector x.
% Para matrices, mean(x) es un vector fila conteniendo el valor medio de cada columna.
[m, n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
34
(Las lineas que comienzan con "%" son interpretadas como comentarios por
MATLAB). La existencia de este archivo en el disco duro define una nueva
funcin en MATLAB llamada m e a n . S i z e s u n v e c t o r d e l o s e n t e r o s d e s d e 1 a 9 9 ,
por ejemplo,
z = 1:99;
entonces, el valor promedio es encontrado escribiendo
m e a n ( z)
que resultara
ans =
50
35
Ejemplo
% C a lc u l a e l p r o m e d i o d e l o s e l e m e n t o s d e u n v e c t o r y d i b u j a d i c h o v e c t o r
% Sintaxis : p r o m e d i o ( x ) d o n d e x e s e l v e c t o r a p r o m e d i a r
function p = promedio(x)
n=length(x);
p=0;
for i=1:n
p=p+x(i);
end
p=p/n;
plot(x);
P a r a e j e c u t a r l a f u n c i n , s e h a c e l a l l a m a d a en l a l n e a d e c o m a n d o s i n c l u y e n d o
el parmetro. La funcin promedio usa por parmetro un vector. Este vector
debe ser definido previamente.
>>A=[1 2 4 3 7 5 6 1 2 0 8 5];
>>promedio(A)
ans =
3.6667
36
P a r a v e r e l c o n t e n i d o d e u n a r c h i v o- m se usa el comando t y p e s e g u i d o d e l n o m b r e
del archivo.
37
Ejemplo
size R e g r e s a e l n m e r o d e f i l a s y c o l u m n a s
A=
0 7 -6
1 0 0
0 1 0
>> [m n]=size(A)
m =
3
n=
3
F u n c i o n e s ma t r i c i a l e s
tril(A) Matriz triangular inferior
triu(A) Matriz triangular superior
p a s c a l Triangulo de Pascal
t o c p l i t z Tocplitz
Ejemplos
>> A =
0 7 -6
1 0 0
0 1 0
>> toeplitz(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
P r o d u c t o d e d o s matrices triangulares.
Esta factorizacin se utiliza para obtener el inverso y el determinante. Tambin
es la base para la solucin de sistemas lineales. Para obtener la factorizacin LU
de A escribimos,
[L, U] = lu(A).
38
Funciones de Funciones
MATLAB representa funciones matemticas mediante archivos- M
funcin. Un ejemplo de una funcin es el archivo -M l l a m a d o h u m p s . m.
de
tipo
39
N o t e q u e e l a rg u m e n t o d e q u a d c o n t i e n e u n n o m b r e d e u n a f u n c i n . P o r e s t o q u a d
se llama una funcin de funcin, i.e., es una funcin que opera en otras
funciones.
de
una
funcin
multi - variable
(minimizacin
no-l i n e a l
sin
fzero - c e r o d e u n a f u n c i n d e u n a v a r i a b l e
c o n s t r - minimizacin con restricciones
fsolve - solucin de ecuacin no-l i n e a l
l e a s t s q - c u a d r a d o s m n i m o s n o-lineales
problemas
de
valor
inicial
para
ode23 - mtodo Runge- Kutta de largo de paso variable que combina un mtodo de
orden dos con uno de orden tres.
ode45 - mtodo Runge -Kutta -F e h l b e r g d e l a r g o d e p a s o v a r i a b l e q u e c o m b i n a u n
mtodo de orden cuatro con uno de orden 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 - n o r e s u n t a d o s i n t e r m e d i o s
1 - resultados intermedios
41
Ejemplo:
if n< maxn
...
if n>=0, break, end
son
los
operadores
de
lgica
"y",
""
"no"
F u n c i n e s any, all
La funcin any(x) devuelve 1 si cualquiera de los elementos de x es diferente de
cero, de lo contrario devuelve 0.
La funcin all(x) d e v u e l v e 1 s o l a m e n t e s i t o d o s l o s e l e m e n t o s d e x s o n d i f e r e n t e s
de cero.
Estas funciones se usan en clusulas i f. Por ejemplo:
if all(A <.5)
. . .
end
Para argumentos matriciales, a n y y a l l t r a b a j a n p o r c o l u m n a s p a r a d e v o l v e r u n
v e c tor fila con el resultado para cada columna. Aplicando la funcin dos veces,
any(any(A)), siempre reduce la matriz a una condicin escalar.
Las funciones relacionales y lgicas en MATLAB son:
any - condiciones lgicas
all - condiciones lgicas
find - halla n d i c e s d e a r r e g l o s d e v a l o r e s l g i c o s
exist - verifica si existen variables
isinf - d e t e c t a i n f i n i t o s
42
finite - v e r i f i c a p a r a l o s v a l o r e s f i n i t o s
de
funciones
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
for variable=inicio:final
declaracin 1;
...
declaracin 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
44
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 resultado final. Es
importante que para cada for halla un e n d .
45
Ejemplos
e=1.0;
while (1.0+e)>1.0001
e=e/2.0;
end
n = 1;
while prod(1:n) < 1.0e100, n = n+1; end
n
La idea es sumar todos los trminos necesarios hasta producir un resultado que,
en la precisin finita la de computadora, no cambie aunque ms trminos sean
aadidos. Para esto procedemos de la forma siguiente:
46
E = zeros(size(A));
F = eye(size(A));
k = 1;
w h i l e n o r m ( E + F- E, 1) > 0
E = E + F;
F = A*F/k
k = k+1;
end
Aqui A es la matriz dada, E representa la suma parcial de la serie, F es un
trmino individual en la serie, y k es el ndice de este trmino.
b) if expresin
proposicin 1;
...
proposicin n;
else
proposicin 1;
...
proposicin m;
end
47
c) if expresin
proposicin 1;
...
proposicin n;
elseif
proposicin 1;
...
proposicin m;
else
proposicin 1;
...
proposicin r;
end
Ejemplos
if dv(i) > maxer
maxer=dv(i);
nmaxe=i;
end
sum=0.0; y=1;
while i<=so
n=input(`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
if n < 0
A = negative(n)
else if rem(n, 2) == 0
A = even(n)
else
A = odd(n)
end
49
>> B=reshape(A,2,6)
B=
1 3 5 7 9 11
2 4 6 8 10 12
>> A(1,1)=A(1,2)+A(2,1)
A =
5 2
3 4
50
>> A(1,2)=A(2,1)
A=
5 3
3 4
>> A(2,2)=10
A=
5 3
3 10
>> b=A(:)
b=
1
3
5
2
4
6
51
Generacin 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
A(1:3, 5:9) matriz de 3x4 que tiene los tres primeros filas y las columnas de 5 a
9 de A
A(:,5) quinta columna de A
A(1:5,:) primeras cinco filas de A
A(:,[4 6])=B(:,1:2)
primeras de A
52
Matrices vacias
La declaracin
x = [ ]
asigna una matriz de dimensin 0x0 a x
Generacin de tablas
>> x=(0.0:0.2:3.0);
> > y = e x p ( - 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
C ol um ns 8 thr ough 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
D e t e r m i n a n t e d e A: det(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
D i a g o n a l d e A: diag(A)
>> diag(A)
ans =
1
5
9
Valores y vectores caractersticos: e i g ( 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 . 0 0 0 0
2.0000
1.0000
v - Vectores caractersticos
d - valores caractersticos
54
>> [v d]=eig(A)
v=
0.9435 -0.8729 0.5774
-0 . 3 1 4 5 - 0. 4 3 6 4 0 . 5 7 7 4
0.1048 -0.2182 0.5774
d=
-3 . 0 0 0 0 0 0
0 2.0000 0
0 0 1.0000
- E x p o n e n c i a l d e u n a m a t r i z: e x p m ( 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 - 1 3 . 6 1 1 5
2.2686 5.2541 - 4 . 8 0 4 4
0.8007 2.2686 - 0 . 3 5 1 0
- Factori z a c i n L U d e A : l u ( 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
- I n v e r s a d e A: inv(A)
>> inv(A)
ans =
0 1.0000 0
0 0 1.0000
-0 . 1 6 6 7 0 1 . 1 6 6 7
- E c u a c i n c a r a c t e r s t i c a d e l a m a t r i z A: poly(A)
>> p = p o l y ( A )
p=
1.0000 0.0000 - 7.0000 6.0000
- Raices de la ecuacin caracterstica : roots(p)
>> r=roots(p)
r =
-3 . 0 0 0 0
2.0000
1.0000
56
` a + ' I d e m que `a' nicamente que el archivo es abierto para lectura y escritura
Ejemplo
fid = fopen(`archivo.dat','r')
fid = -1, error
0, lectura/escritura normal
[fid, mensaje = fopen(`archivo.dat','r ' )
57
Ejemplo:
A = fread(fid,10,'float')
Ejemplo
function x=ccdifs(t,x)
global ka,kb
x p = [ 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('ccdifs',0,10,[1:1]);
58
V e c t o r e s P r e- A s i g n a d o s
Si no podemos vectorizar un pedazo de cdigo, podemos hacer que los ciclos for
vayan ms rpido pre -asignando cualquier vector en el cual el resultado de salida
sea guardado. Veamos un ejemplo:
y = zeros (1,100);
for i = 1:100
y(i) = det(X^i);
end
Si no pre -asignamos el vector "y", el interpretador de MATLAB ir aumentando
el tamao de "y" por uno cada vez que se itera en el ciclo.
Permite incrementar la velocidad de proceso de MATLAB
Sintaxis
variable=inicio:incremento:final
Ejemplo
i=1, wo=2*pi*fo;
for t=0:dt:per
f(i)=sin(wo*t);
i= i+1;
end
t=0:dt:per;
fi=sin(wo*t);
59
Plot
Sintaxis:
a) plot(y)
b) plot(x,y)
c) plot(x,y,'tipo_lnea')
d) plot(x1,y1,'tipo_lnea_1',x2,y2,'tipo_lnea_2', ... , xn,yn,'tipo_lnea_n')
Si y es un vector, p l o t ( y ) p r o d u c e u n a g r f i c a l i n e a l d e l o s e l e m e n t o s d e y v e r s u s
el ndice de estos. Si especifica dos vectores como argumentos, plot(x, y)
produce una grfica de y versus x.
Smbolo Color
y amarillo
m magenta
c cyan (azul claro)
r rojo
g verde
60
b azul
w blanco
k negro
Smbolo Estilo de lnea
. punto
o circulo
x marca
+ mas
* asterisco
- slido
: punteado
-. s e g m e n t o p u n t o
-- s e g m e n t 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+)')
Tambin puedes
matriciales:
usar
la
funcin
plot
con
mltiples
pares
de
argumentos
61
P a r a e v a l u a r u n a f u n c i n , s e c r e a u n a r c h i v o d e e s t a f u n c i n y se le pasa el
nombre del archivo a fplot. El siguiente archivo -M de tipo funcin define la
funcin anterior como fofx.
function y = fofx(x)
y = cos(tan(pi*x));
Este archivo se guarda con el nombre de f o f x . m. Ahora la instruccin
fplot('fofx', [0 1])
prod u c e l a g r f i c a :
62
Aqu, fplot usa menos puntos para evaluar la misma funcin a intervalos ms
cerrados en la regin donde la rapidez de cambio es mayor.
loglog
Sintaxis
a) loglog(x,y)
b) loglog(x,y,'tipo_lnea')
c)loglog(x1',y1','tipo_lnea_1',...,
xn,yn,'tipo_lnea_n')
Ejemplo
x = l o g s p a c e (- 1,3); loglog(x,exp(x))
donde l o g s p a c e tiene las formas:
l o g s pa c e ( a , b )
logspace(a,b,n)
a,b exponentes de los lmites. Es decir, 10^a y 10^b
semilog(x), semilog(y)
Sintaxis
a) semilogx(x,y)
b) semilogy(x,y)
Ejemplo
x=0:.1:20; semilogy(x,10.^x)
63
fill
Dibuja el area interior de una curva en determinado color
Sinta x i s:
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 pantalla en mxn subdivisioens, numeradas por el parmetro p, de
izquierda a derecha, ini c i a n d o p o r l a f i l a s u p e r i o r
Sintaxis:
subplot(m,n,p)
Ejemplo:
vt=smvars(:,1);
it=smvars(:,2);
rang=smvars(:,3);
ikd=smvars(:,4);
subplot(2,2,1);
plot(vt)
subplot(2,2,2)
plot(it)
suplot(2,2,3)
plot(rang)
subplot(2,2,4)
plot(ikd)
bar
Crea una grfica de ba r r a s
Sintaxis:
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
b a r ( x , e x p (- x.*x)
Nota: Los valores de x deben estar igualmente espaciados
stairs
Igual que b a r, nicamente sin lneas in ternas
fplot
Dibuja la grfica de una funcin
Sintaxis:
a) fplot(`funcin', [inicio,final])
b) fplot(`funcin', [inicio,final],n)
c) fplot(`funcin', [inicio,final],n,ngulo)
d) [x,y]=fplot(`funcin', [inicio,final]) => plot(x,y)
n - nmero de puntos
n gulo - ngulo entre segmentos sucesivos de la funcin
Ejemplo
fplot(`sin',[0,pi])
fplot(`tanh',[ -2 2 ] )
function y=func(x)
y=200*sin(x(:))./x(:);
fplot(`func',[- 3 0 3 0 ] , 6 0 , 2 )
polar
Dibujo en coordenadas polares
Sintaxis:
a) polar(ngulo,radio)
b) polar(ngulo, radio, `tipo_lnea')
Ejemplo
t=0:0.01:2*pi;
polar(t,sin(5*t))
65
colormap
Colorea con sombreado el interior de una curva o polgono
Sintaxis
colormap(colorbase)
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 rango 0- 255
fill(y,x,x) => sombreado horizontal
f i l l ( y , x , y ) => sombreado vertical
contour, contour3
Genera dibujos compuestos de lneas de valores de datos constantes obtenidos
de una matriz de entrada
S i n ta x i s:
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 funcin de contour en 3 dimensiones
Sintaxis:
a) contour3(z)
b) contour3(z,n)
c) contour3(x,y,z)
d) contour3(x,y,z,n)
E j e mplo
contour3(peaks,30)
meshgrid
Genera arreglos X y Y para dibujos en 3 dimensiones
Sintaxis:
a) [X,Y] = meshgrid(x,y)
b) [X,Y] = meshgrid(x) => meshgrid(x,y)
Ejemplo. Evalue y dibuje la funcion z=x*exp( -x^2 -y^2) sobre el rango -2 < = x < = 2 ,
-2 < = y < = 2
[ X , Y ] = meshgrid(-2 : 2 : 2 ) ; z = x . * e x p (- x ^ 2 -y^2); ...
mesh(Z)
67
meshc
Aade un plano de contorno debajo del dibujo
meshz
A a d e u n p l a n o d e r e f e r e n c i a o c o r t i n a a l d i b u j o
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, surfc
Crean superficies sombreadas en 3 dimensiones
Sintaxis:
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 S i n t a x i s que surf
68
Ejemplo
[x,y]=meshgrid(- 3:.2:3); z=peaks(x,y); surf(x,y,z)
k = 5 ; n = 2 ^ k -1 ; [ x , y , z ] = s p h e r e ( n ) ; c = h a d a m a r d ( 2 ^ k ) ; . . .
surf(x,y,z,c); colormap(hot)
hadamar d
M a t r i z h a d a m a r d c o m p u e s t a d e 1 ' s y -1's, empleada en procesamiento de seales
y anlisis numrico
Ejemplo (matriz de 4*4)
1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1
sphere
Genera una esfera
Sintaxis
[x,y,z] = sphere(n)
n - nmero de meridianos
Ejemplo
[x,y,z]=sphere(20);
mesh(x,y,z)
o con :
colormap(hot)
surfl
Superficie sombreada tridimensioanl con efecto de reflexin de luz
Sintaxis:
a) surfl(z)
b) surfl(z,s)
c) surfl(x,y,z)
d) surfl(x,y,z,s)
s - direccin de la luz
69
Ejemplo
[x,y]=meshgrid(- 3:0.01:3);
z=peaks(x,y);
surfl(x,y,z)
shading
Establece las propiedades de sombreado con color
Sintaxis
shading faceted
shading interp
shading flat
utiliza
sombreado
"flat"
con
lneas
de
malla
negras
axis
Escala y apariencia de los ejes
Sintaxis:
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 escalamiento de ejes a su modo de autoescalamiento por
defecto.
a x i s ( ` i j ' ) dibuja nuevamente la grfica.
El eje y es vertical y es numerado de arriba hacia abajo.
El eje j es horizontal y es n u m e r a d o d e i z q u i e r d a a d e r e c h a .
axis(`xy') regresa la forma de ejes cartesianos que existe por defecto . El eje x
es horizontal y se numera de izquierda a derecha. El eje y es vertical y se
numera de abajo hacia arriba
a x i s ( ` s q u a r e ' ) d e t e r m i n a q u e l a r e g i n de los ejes es cuadrada
axis(`equal') indica que los factores de escalamiento y marcas incrementales a lo
largo de los ejes x y y son iguales.
axis(`off') d e s a c t i v a l a s e t i q u e t a s d e l o s e j e s y l a s m a r c a s
a x i s ( ` o n ' ) activa las etiquetas de los ejes y las marcas
Para el ejemplo ltimo:
...
axis([ - 3 3 - 3 3 - 8 8])
Ejemplo
colormap(hot)
fill3(rand(3,4), rand(3,4), rand(3,4), rand(3,4))
Ejemplo
fill3(rand(20), rand(20), rand(20), rand(20))
71
Ejemplo
load clown
72
c l f borra la figura
Ejemplo
load train
sound(y,Fs)
t=(0:length(y)- 1 ) / F s ;
plot(t,y)
74
6. SIMULINK
Simulink es una herramienta para el modelaje, anlisis y simulacin de una amplia
variedad de sistemas fsicos y matemticos, inclusive aquellos con elementos no
lineales y aquellos que hacen uso de tiempos continuos y discretos. Como una
extensin de MatLab, Simulink adiciona muchas caractersticas especficas a los
sistemas dinmicos, mientras conserva toda la funcionalidad de propsito
g e n e r a l d e M a t L a b . A s S i m u l i n k n o e s c o m p l e t a m e n t e u n p r o g r a m a s e p a r a d o de
MatLab, sino un anexo a l. El ambiente de MatLab est siempre disponible
mientras se ejecuta una simulacin en Simulink.
Simulink tiene dos fases de uso: la definicin del modelo y el anlisis del
modelo. La definicin del modelo significa construir el modelo a partir de
elementos bsicos construidos previamente, tal como, integradores, bloques de
ganancia o servomotores. El anlisis del modelo significa realizar la simulacin,
linealizacin y determinar el punto de equilibrio de un modelo previamente
definido.
Para simplificar la definicin del modelo Simulink usa diferentes clases de
ventanas llamadas ventanas de diagramas de bloques. En estas ventanas se puede
crear y editar un modelo grficamente usando el ratn. Simulink usa un ambiente
grfico lo que hace sencillo la creacin de los modelos de sistemas.
Despus de definir un modelo este puede ser analizado seleccionando una opcin
desde los mens de Simulink o entrando comandos desde la lnea de comandos de
MatLab.
Simulink puede simular cualquier si s t e m a q u e p u e d a s e r d e f i n i d o p o r e c u a c i o n e s
diferenciales continuas y ecuaciones diferenciales discretas. Esto significa que
se puede modelar sistemas continuos en el tiempo, discretos en el tiempo o
sistemas hbridos.
S i m u l i n k u s a d i a g r a m a s d e b l o q u e s p a ra representar sistemas dinmicos.
Mediante una interface grfica con el usuario se pueden arrastrar los
componentes desde una librera de bloques existentes y luego interconectarlos
mediante conectores y alambre. La ventana principal de Simulink se activa
escribiendo simulink en la lnea de comandos de MatLab, y se muestra a
continuacin:
Haciendo doble click en cualquiera de las libreras presentes en esta ventana se
abrir otra ventana conteniendo una cantidad de bloques relativos a dicha
librera.
Para realizar un sistema debe abrirse una nueva ventana de diagrama de bloques
seleccionando la opcin file del men principal del Simulink y all la opcin new.
En esta nueva ventana se colocarn todos los bloques interconectados que
formarn el sistema deseado .
75
En este diagrama se tiene al bloque llamado PID que fue definido previamente y
agrupado como uno solo. El contenido de dicho bloque se obtiene haciendo doble
click sobre l. A continuacin se muestra el bloque PID:
76
77
7. COMANDOS DE MATLAB
7.1 General purpose commands:
M a n a g i n g c o m m a n d s a n d f u n c t i o n s:
help - On -l i n e d o c u m e n t a t i o n .
what - Directory listing of M-, MAT - a n d M E X -files.
type - L i s t M-f i l e .
lookfor - Keyword search through the HELP entries.
which - L o c a t e f u n c t i o n s a n d f i l e s .
d emo - Run demos.
path - Control MATLAB's search path.
78
C o n t r o l l i n g t h e c o m m a n d w i n d o w:
cedit - S e t c o m m a n d l i n e e d it/recall facility parameters.
clc - Clear command window.
home - Send cursor home.
format - Set output format.
echo - E c h o c o m m a n d s i n s i d e s c r i p t f i l e s .
more - C o n t r o l p a g e d o u t p u t i n c o m m a n d w i n d o w .
General information:
info - I n f o r m a t i o n a b o u t M A T L A B a n d T h e M a t h W o r k s , I n c .
subscribe - B e c o m e s u b s c r i b i n g u s e r o f M A T L A B .
hostid - MATLAB server host identificati o n n u m b e r .
whatsnew - Information about new features not yet documented.
ver - M A T L A B , S I M U L I N K , a n d T O O L B O X v e r s i o n i n f o r m a t i o n .
79
Logical characteristics:
exist - C h e c k i f v a r i a b l e s o r f u n c t i o n s a r e d e f i n e d .
any - T r u e i f a n y e l e m e n t o f v e c t o r i s t r u e .
a l l - True if all elements of vector are true.
f i n d - F i n d i n d i c e s o f n o n - zero elements.
isnan - T r u e f o r N o t- A- Number.
isinf - True for infinite elements.
finite - T r u e f o r f i n i t e e l e m e n t s .
isempty - T r u e f o r e m p t y m a t r i x .
issparse - True for sparse matrix.
isstr - T r u e f o r t e x t s t r i n g .
isglobal - True for global variables.
80
Con t r o l S y s t e m T o o l b o x C o m m a n d s:
Model building:
append - Append system dynamics.
augstate - A u g m e n t s t a t e s a s o u t p u t s .
b l k b u i l d - Build state -space system from block diagram.
cloop - C l o s e l o o p s o f s y s t e m .
connect - Block diagram modeling.
conv - Convolution of two polynomials.
destim - F o r m d i s c r e t e s t a t e e s t i m a t o r f r o m g a i n m a t r i x .
dreg - Form discrete controller/estimator from gain matrices.
drmodel - Generate random discrete model.
estim - Form continuous state estimator from gain matrix.
feedback - F e e d b a c k s y s t e m c o n n e c t i o n .
ord2 - G e n e r a t e A , B , C , D f o r a s e c o n d-order system.
pade - Pade approximation to time delay.
parallel - P a r a l l e l s y s t e m c o n n e c t i o n .
reg - F o r m c o n t i n u o u s c o n t r o l l e r / e s t i m a t o r f r o m g a i n m a t r i c e s .
rmodel - Generate random continuous mod e l .
series - S e r i e s s y s t e m c o n n e c t i o n .
ssdelete - Delete inputs, outputs, or states from model.
ssselect - Select subsystem from larger system.
Model conversions>:
c2d - Continuous to discrete - time conversion.
c2dm - Continuous to discrete- time conversion w i t h m e t h o d .
c2dt - C o n t i n u o u s t o d i s c r e t e c o n v e r s i o n w i t h d e l a y .
d2c - D i s c r e t e t o c o n t i n u o u s- t i m e c o n v e r s i o n .
d2cm - Discrete to continuous- time conversion with method.
poly - Roots to polynomial conversion.
residue - P a r t i a l f r a c t i o n e x p a n s i o n .
81
Model reduction:
balreal - Balanced realization.
dbalreal - Discrete balanced realization.
dmodred - Discrete model order reduction.
minreal - M i n i m a l r e a l i z a t i o n a n d p o l e- zero cancellation.
modred - Model order reducti o n .
M o d e l r e a l i z a t i o n s:
canon - C a n o n i c a l f o r m .
ctrbf - Controllability staircase form.
obsvf - Observability staircase form.
ss2ss - Apply similarity transform.
Model properties:
covar - Continuous covariance response to white noise.
ctrb - C o n t r o l l a b i l ity matrix.
damp - Damping factors and natural frequencies.
dcgain - Continuous steady state (D.C.) gain.
dcovar - Discrete covariance response to white noise.
ddamp - D i s c r e t e d a m p i n g f a c t o r s a n d n a t u r a l f r e q u e n c i e s .
ddcgain - Discrete steady state (D.C.) gain.
dgram - Discrete controllability and observability gramians.
dsort - S o r t d i s c r e t e e i g e n v a l u e s b y m a g n i t u d e .
eig - Eigenvalues and eigenvectors.
esort - Sort continuous eigenvalues by real part.
82
Time response:
dimpulse - Discrete unit sample response.
dinitial - Discrete initial condition response.
dlsim - Discrete simulation to arbitrary inputs.
dstep - Discrete step response.
filter - S I S O z - transform simulation.
impulse - Impulse response.
initial - Continuous initial condition response.
lsim - C o n t i n u o u s s i m u l ation to arbitrary inputs.
ltitr - Low level time response function.
step - Step response.
stepfun - S t e p f u n c t i o n .
Frequency response:
bode - Bode plot (frequency response).
dbode - Discrete Bode plot (frequency response).
dnichols - Discrete Nichols plo t.
dnyquist - Discrete Nyquist plot.
dsigma - Discrete singular value frequency plot.
fbode - F a s t B o d e p l o t f o r c o n t i n u o u s s y s t e m s .
freqs - Laplace - transform frequency response.
freqz - Z- t r a n s f o r m f r e q u e n c y r e s p o n s e .
ltifr - Low level frequency response f u n c t i o n .
margin - Gain and phase margins.
nichols - Nichols plot.
83
ngrid - D r a w g r i d l i n e s f o r N i c h o l s p l o t .
nyquist - Nyquist plot.
sigma - Singular value frequency plot.
R o o t l o c u s:
pzmap - P o l e- zero map.
rlocfind - Interactive root locus gain determina tion.
rlocus - E v a n s r o o t-locus.
sgrid - D r a w c o n t i n u o u s r o o t l o c u s w n , z g r i d .
zgrid - D r a w d i s c r e t e r o o t l o c u s w n , z g r i d .
Gain selection:
acker - SISO pole placement.
dlqe - D i s c r e t e l i n e a r -q u a d r a t i c e s t i m a t o r d e s i g n .
d l q e w - General discrete linear quad ratic estimator design.
dlqr - D i s c r e t e l i n e a r -q u a d r a t i c r e g u l a t o r d e s i g n .
dlqry - D i s c r e t e r e g u l a t o r d e s i g n w i t h w e i g h t i n g o n o u t p u t s .
lqe - L i n e a r-quadratic estimator design.
lqed - Discrete estimator design from continuous cost function.
lqe2 - Linear quadratic estimator design using Schur method.
l q e w - G e n e r a l l i n e a r-quadratic estimator design.
lqr - L i n e a r- quadratic regulator design.
lqrd - Discrete regulator design from continuous cost function.
lqry - R e g u l a t o r d e s i g n w i t h w e i g h t i n g o n o u t p u t s .
lqr2 - Linear quadratic regulator design using Schur method.
place - P o l e p l a c e m e n t .
Equation solution:
are - Algebraic Riccati equation solution.
dlyap - Discrete Lyapunov equation solution.
lyap - C o n t i n u o u s L y a p u n o v e q u a t i o n s o l u t i o n .
lyap2 - Lyapunov equa tion solution using diagonalization.
84
Demonstrations:
ctrldemo - Introduction to the Control Toolbox.
boildemo - LQG design of boiler system.
jetdemo - Classical design of jet transport yaw damper.
diskdemo - Digital control design of hard disk controller.
kalmdemo - K a l m a n f i l t e r d e s i g n a n d s i m u l a t i o n .
85
>>y=[1];
>>u=[1 0.25 1];
Para d e t e r m i n a r l a r e s p u e s t a e n e l t i e m p o p a r a u n a e n t r a d a e s c a l n u n i t a r i o d e
este sistema se usa el comandos step indicando el vector del numerador y del
denominador entre parntesis. step(num,den)
>>step(y,u)
86
87
Ejemplo
>>[num,den]=ss2tf(a,b,c,d)
num =
0 0 1.0000
den =
1.0000 0.2500 1.0000
Ejemplo
>>step(a,b,c,d)
Para obtener la respuesta en el tiempo para una entrada impulso unitario se usa
el comando impulse, con Sin taxis idntica a la utilizada con el comando step:
Si se define el sistema en MatLab por los polinomios
denominador de la funcin de transferencia tenemos:
del
numerador
y=[1 5 4];
u=[1 6 11 6];
impulse(y,u)
88
B=
1
0
0
C=
1 5 4
D =
0
impulse(A,B,C,D)
89
90
Ejemplo
>>y=[1];
>>u=[1 0.25 1];
>>bode(y,u)
91
92
93
>>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
Para obtener el lugar de las races, MatLab dispone del comando rlocus. Las
diferentes
Sintaxis para utilizar este comando son:
r l o c u s ( N U M , D E N ) c a l c u l a y dibuja el lugar de las races cuando se trabaja con la
funcin de transferencia donde NUM y DEN son los vectores de los coeficientes
en potencia descendiente de S de los polinomios del numerador y denominador
de la funcin de transferencia G(S). MatLab g enerar automticamente un
conjunto de valores de la ganancia K.
rlocus(NUM,DEN,K): calcula y dibuja el lugar de las races cuando se trabaja con
la funcin de transferencia y ha sido previamente definido el rango de valores
de K. Por ejemplo de 0 a 100 co n incrementos de 10: k=0:10:100
R = rlocus(NUM,DEN,K) o [R,K] = rlocus(NUM,DEN) no dibuja el lugar de las
races pero almacena en la matriz R, de longitud igual al nmero de elementos de
K, la localizacin de las races. R tendr tantas columnas como races existan,
estas pueden adems ser complejas.
rlocus(A,B,C,D), R=rlocus(A,B,C,D,K), o [R,K]=rlocus(A,B,C,D) son equivalentes a
las Sintaxis anteriores pero empleando las matrices de estado para hallar el
lugar de las races.
95
Cuando se trabaja con las matrices de estado, las Sintaxis para el comando
rlocfind es: [ K , P O L E S ] = r l o c f i n d ( A , B , C , D ) .
A l e j e c u t a r e l c o m a n d o r l o c f i n d c o n l a f u n c i n d e transferencia anterior, MatLab
activa la ventana de figuras en espera de que el usuario seleccione un punto del
lugar de las races mediante el cursor. En este caso el punto seleccionado fue 2.4623 en la parte real y - 0 . 0 1 3 2 e n l a p a r t e i m a g i n a r i a .
[k,p o l e s ] = r l o c f i n d ( n u m , d e n )
Select a point in the graphics window
selected_point =
-2 . 4 6 2 3 - 0 . 0 1 3 2 i
k =
1.6655
poles =
-2 . 4 6 2 5
-0 . 2 6 8 8 + 0 . 7 7 7 3 i
-0 . 2 6 8 8 - 0 . 7 7 7 3 i
Para seleccionar el punto en el cual calcular los polos del lugar de las races sin
usar el cu rsor se agrega un parmetro al comando rlocfind. Este debe ser el
punto o los puntos en donde se desea tomar el valor de k. La nueva
Sintaxis es:
[K,POLES] = rlocfind(A,B,C,D,P) o [K,POLES] = rlocfind(num,den,P)
P debe definirse previamente indicando la parte real e imaginaria del mismo. Por
ejemplo: P=3+0i o P=1 -0 . 5 5 5 i .
96
que es de nuevo una relacin entre dos polinomios. Los coeficientes decrec i e n t e s
en potencias de S de estos polinomio pueden ser almacenados en vectores en
MatLab. Si se multiplica el controlador C(S) por la funcin de transferencia del
proceso o planta G(S) se formar la funcin de transferencia de lazo abierto.
Por ejemplo un G(S) puede ser:
97
Para obtener la respuesta en lazo abierto ante una entrada escaln unitario
tenemos:
>>Kp=50;
>>Ki=1;
>>Kd=10;
>>num=[Kd Kp Ki];
>>den=[1 10 20 0 0];
>>step(num,den)
Para obtener la respuesta de lazo cerrado en el tiempo para una entra da escaln
unitario se emplea el comando cloop, el cual genera los polinomios del numerador
(numc) y denominador (denc) de la funcin de transferencia de lazo cerrado con
realimentacin unitaria a partir de los polinomios de la funcin de transferencia
de l a z o a b i e r t o ( n u m y d e n ) . S u
Sintaxis es:
[numc,denc]=cloop(num,den,sign)
El signo de la realimentacin viene dado por sign. Para el ejemplo anterior,
tenemos:
>>Kp=500;
>>Ki=1;
>>Kd=100;
>>num1=[Kd Kp Ki];
>>den1=[1 0];
>>num2=1;
>>den2=[1 10 20 0];
> > [numc,numd]=cloop(conv(num1,num2),conv(den1,den2), - 1);
>>step(numc,denc)
Se usa el comando c o n v p a r a o b t e n e r l a c o n v o l u c i n y m u l t i p l i c a c i n p o l i n o m i a l d e
dos vectores. La salida obtenida mediante el comando s t e p se muestra a
continuacin:
98
9. TRUCOS EN MATLAB
Paper semilogartmico gratis: papelbod.m
Para cotejar sus diagramas de Bode:
>>bode(num,den)
donde n u m y d e n son vectores que contienen los coeficientes del numerador y
denominador de H(s) en orden de potencias descendentes de s.
N o t a : E s t o da l a s c u r v a s e x a c t a s , n o l a s a p r o x i m a c i o n e s a s i n t t i c a s c o n l n e a s
rectas.
Ejemplo: Para ,
Escribimos
>>bode([158.11 15.811],[1 5 0])
99
100
101