Sunteți pe pagina 1din 101

PROGRAMANDO CON MATLAB

GENERALIDADES
Programar en MatLab es usar una serie de comandos

que permitan realizar una tarea o funcin especfica.

Estos pueden ser escritos uno por uno a travs de la

lnea de comandos:
A=[1 2 3;4 5 6;7 8 9]

A =

1 2 3

4 5 6

7 8 9
Ejemplo
Los archivos de disco que contienen instrucciones de MATLAB
se llaman archivos-M. Esto es as porque siempre tienen una
extencin de ".m" como la ltima parte de su nombre de
archivo.

Un archivo-M consiste de una secuencia de instrucciones
normales de MATLAB, que probablemente incluyen referencias a
otros archivos-M. Un archivo-M se puede llamar a s mismo
recursivamente. Puedes crear archivos-M utilizando un editor
de texto procesador de palabras.

Hay dos tipos de archivos-M: los de comandos y las funciones.
Los archivos de comandos, automatizan secuencias largas de
comandos. Los archivos de funciones, permiten aadir a MATLAB
funciones adicionales expandiendo asi la capacidad de este
programa. Ambos, comandos y funciones, son archivosordinarios
de texto ASCII.
ARCHIVOS-M: COMANDOS Y FUNCIONES
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
largas de comandos que se conviertan en interactivas. Por
ejemplo, suponga que el archivo fibo.m contiene los siguientes
comandos de MATLAB:

% Un archivo-M para calcular los elementos de la 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)
ARCHIVOS DE COMANDOS
Si escribimos fibo en una ventana de MATLAB seguido
de "enter vemos que MATLAB calcula los primeros 16
nmeros de Fibonacci, y luego grafica estos. Luego
que la ejecucin del archivo es completada, las
variables f y i permanecen en el espacio de trabajo.

Los programas de demostraciones incluidos en MATLAB
son ejemplos de como usar comandos para hacer tareas
ms complicadas. Para utilizar estos escriba demos
en el "prompt" de MATLAB.
Un archivo-M que contiene la palabra function al principio
de la primera lnea, es 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 mean.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;
ARCHIVOS DE FUNCIONES
(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 mean. Si z es un vector de los
enteros desde 1 a 99, por ejemplo,

z = 1:99;

entonces, el valor promedio es encontrado
escribiendo

mean(z)

que resultara

ans =
50
Ejemplo

% Ejemplo de un archivo-m
% Creacin del vector x usando el comando for
n=5;
for i=1:n
x(i)=i^2;
end
x
% Fin del archivo-m

Este ejemplo es un archivo-m tipo comando. Para
ejecutarlo, en la lnea de comandos se debe escribir
el nombre del archivo:

>> ejemplo
x =
1 4 9 16 25
Ejemplo

% Calcula el promedio de los elementos de un vector y
% dibuja dicho vector
% Sintaxis: promedio(x) donde x es el vector a promediar

function p = promedio(x)
n=length(x);
p=0;
for i=1:n
p=p+x(i);
end
p=p/n;
plot(x);
Algunas funciones elementales son:

real(a) Parte real
imag(a) Parte imaginaria
conj(a) Conjugado de a
fft(x) Transformada discreta de Fourier del
vector x
fft(x,n) FFT de n puntos muestrales
ifft(x) Transformada inversa rpida de Fourier
del vector x
ifft(x,n) FFT inversa de n puntos muestrados
zeros Inicializa a ceros
zeros(n) Matriz de nxn de ceros
zeros(m,n) Matriz de mxn de ceros
y=zeros(size(A) Matriz del tamao de A, todos ceros
OTRAS FUNCIONES
FUNCIONES MATEMTICAS
Ejemplo

size Regresa el nmero de filas y columnas
A =
0 7 -6
1 0 0
0 1 0

>> [m n]=size(A)

m =
3
n =
3
tril(A) Matriz triangular inferior
triu(A) Matriz triangular superior
pascal Triangulo de Pascal
tocplitz Tocplitz
FUNCIONES MATRICIALES
La descomposicin de Valores Singulares es importante
para el anlisis de problemas que envuelvan matrices.

La asignacin triple [U, S, V] = svd(A) produce los tres
factores en la descomposicin de valores singulares
A = U*S*V'. Las matrices U y V son ortogonales y la matriz
S es diagonal.

La funcin svd(A) devuelve solamente los elementos de la
diagonal de S, que son los valores singulares de A.
DESCOMPOSICIN DE VALORES SINGULARES
La Descomposicin de Valores Propios se utiliza para
obtener los valores y vectores propios de una matriz
cuadrada A.

La funcin eig(A) devuelve los valores propios de A
en un vector columna.

La asignacin [X,D]=eig(A) produce una matriz diagonal
D cuyos elementos diagonales son los valores propios
de A y las columnas de X son los vectores propios
correspondientes.

Las Funciones de norma, rango y acondicionamiento
asociadas son:

cond - nmero de condicin en la norma 2
norm - norma 1, norma 2, norma F, norma
rank - rango
rcond - estimado del nmero de condicin

DESCOMPOSICIN DE VALORES PROPIOS
Ejemplo: El archivo-M llamado humps.m contiene las siguientes instrucciones:
function y = humps(x)

y = 1./((x-.3).^2 +.01) + 1./((x-.9).^2 +.04) - 6;

y para la grfica de la funcin escribimos

x = -1:.01:2;
plot(x, humps(x))
Las funciones de funciones para ecuaciones no-lineales y optimizacin incluyen:

fmin mnimo de una funcin de una variable
fmins mnimo de una funcin multi-variable (minimizacin no-lineal sin
restricciones)
fzero cero de una funcin de una variable
constr minimizacin con restricciones
fsolve solucin de ecuacin no-lineal
leastsq cuadrados mnimos no-lineales
ECUACIONES NO-LINEALES Y FUNCIONES DE OPTIMIZACIN
Las funciones de MATLAB para resolver problemas de valor inicial para ecuaciones
diferenciales ordinarias son:

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-Fehlberg de largo de paso variable que combina un
mtodo de orden cuatro con uno de orden cinco.

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 intermedios
default tol: ode23 -> 1.0e-03
ode45 -> 1.oe-06
FUNCIONES PARA ECUACIONES DIFERENCIALES
function nombre_1=nombre_2(parametro_1, ..., parametro_n)

Ejemplos:

function y=promedio(x)

function i=inodal(t,v)

function xpunto=vdpol(t,x)

xpunto=zeros(2,1);

xpunto(1)=x(1).*(1-x(2).^2)-x(2);

xpunto(2)=x(1);
DECLARACIN DE function
SINTAXIS
OPERADORES RELACIONALES
Los operadores relacionales de MatLab son:

< menor que

<= menor o igual a

> mayor que

>= mayor o igual a

== igual a

=~ no igual a
Ejemplo:

if n< maxn

...

if n>=0, break, end
Los operadores &, | y ~ son los operadores de lgica "y", "" y "no" respectivamente.


El resultado de C = A & B es una matriz cuyos elementos son unos donde A y B sean

ambos distintos de cero, y ceros donde A B sean cero. A y B deben de ser matrices

con las mismas dimensiones, a menos que una de ellas sea un escalar.


El resultado de C = A | B es una matriz cuyos elementos son unos donde A B tienen

un elemento diferente de cero, y ceros donde ambas tienen elementos cero. A y B

deben de ser matrices con las mismas dimensiones, a menos que una sea un escalar.


El resultado de B = ~A es una matriz cuyos elementos son uno donde A tiene un

elemento cero, y ceros donde A tiene elementos diferentes de cero.
OPERADORES LGICOS
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) devuelve 1 solamente si todos los elementos de x son diferentes

de cero.

Estas funciones se usan en clusulas if. Por ejemplo:

if all(A <.5)

. . .

end
FUNCIONES any Y all
Para argumentos matriciales, any y all trabajan por columnas para devolver

un vector 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 ndices de arreglos de valores lgicos

exist verifica si existen variables

isinf detecta infinitos

finite verifica para los valores finitos
Los caracteres especiales de MatLab son:

[ ] Se utilizan para formar vectores y matrices
( ) Define precedencia en expresiones aritmticas. Encierra argumentos
de funciones en forma usual
, Separador de elementos de una matriz, argumentos de funciones y
declaraciones en lneas con declaraciones mltiples
; Termina filas de una matriz, separador de declaraciones
% 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
CARACTERES ESPECIALES
for variable=incio:paso:final
declaracin 1;
...
declaracin n;
end


for variable=inicio:final
declaracin 1;
...
declaracin n;
end
CONTROL DE FLUJO
DECLARACIN DE for SIMPLE
SINTAXIS
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 instruccin, grupo de instrucciones, pueda
repetirse un nmero determinado de veces. Por ejemplo,

for i = 1:n, x(i) = 0, end

asigna 0 a los primeros n elementos de x. Si n es menor de 1, el ciclo sigue
siendo vlido pero MATLAB no ejecuta la instruccin intermedia. Si x no esta
definido, si tiene menos de n elementos, entonces un espacio adicional es
localizado automticamente a x cada vez que sea necesario.
while expresion
proposicin 1;
...
proposicin 2;
end
DECLARACIN while
SINTAXIS

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=sin(wo*t);t=t+dt;end
Ejemplos
El ciclo WHILE permite a una instruccin, grupo de instrucciones, repetirse
un nmero indefinido de veces, bajo el control de una condicin lgica. El
siguiente ciclo while halla el primer entero n para el cual n! es un nmero de
100 digitos:


n = 1;

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

n


Un clculo ms prctico ilustrando el ciclo while es en el cmputo del exponencial
de una matriz, llamado expm(A) en MATLAB. Una posible definicin de la
funcin exponencial es mediante la serie:


expm(A) = I + A + A^2/2! + A^3/3! + ...
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:

E = zeros(size(A));

F = eye(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 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.
a) if expresin
proposicin 1;
...
proposicin n;
end



b) if expresin
proposicin 1;
...
proposicin n;
else
proposicin 1;
...
proposicin m;
end
DECLARACIONES if, else, elself Y break
SINTAXIS
c) if expresin
proposicin 1;
...
proposicin n;
elseif
proposicin 1;
...
proposicin m;
else
proposicin 1;
...
proposicin r;
end


d) if expresin, break, end
Ejemplo

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

A =

1 2 3

4 5 6

7 8 9
ALGEBRA MATRICIAL
CREACIN DE UNA MATRIZ
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
CAMBIO DEL ORDEN DE UNA MATRIZ: reshape
SINTAXIS
>> A=[1 2; 3 4]

A =
1 2
3 4

>> A(1,1)=A(1,2)+A(2,1)

A =
5 2
3 4
MODIFICACIN INDIVIDUAL DE ELEMENTOS
>> A(1,2)=A(2,1)

A =
5 3
3 4

>> A(2,2)=10

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

A =
1 2
3 4
5 6

>> b=A(:)

b =
1
3
5
2
4
6
CONVERSIN DE UNA MATRIZ EN UN VECTOR
>> 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
GENERACIN DE VECTORES:
Ejemplos
Si la matriz original A es de 10*10, entonces:

A(1:3,5) matriz de 3x1 que tiene los tres primeros elementos de la columna 5 de
A

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) remplaza la cuarta y sexta columnas de A con las dos
primeras de A
ACCESO A SUBMATRICES CONTIGUAS Y NO CONTIGUAS
Ejemplos
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

DECLARACIN DE MATRICES COMPLEJAS
>> x=(0.0:0.2:3.0);

>> y=exp(-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
GENERACIN DE TABLAS
>> A=[1 2 3;4 5 6; 7 8 9]

A =
1 2 3
4 5 6
7 8 9

>> det(A)

ans =0
DETERMINANTE DE A: det(A)
>> A=[0 7 -6; 1 0 0;0 1 0]

A =
0 7 -6
1 0 0
0 1 0
VALORES Y VECTORES CARACTERSTICOS: eig(A)
>> eig(A)

ans =
-3.0000
2.0000
1.0000
>> [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
v - Vectores caractersticos
d - valores caractersticos
>> 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
Exponencial de una matriz: expm(A)
>> inv(A)

ans =
0 1.0000 0
0 0 1.0000
-0.1667 0 1.1667
Inversa de A: inv(A)
Ecuacin caracterstica de la matriz A: poly(A)
>> p=poly(A)

p =
1.0000 0.0000 -7.0000 6.0000
id = fopen(`nombre.dat', `permiso')

donde permiso puede ser:

`r' Abre archivo para lectura
`r+ Abre archivo para lectura y escritura
`w' Borra el contenido del archivo existente o crea un nuevo archivo y lo
abre para escritura
`w+' Idem que `w' nicamente que el archivo se abre para lectura y escritura
`a' Crea y abre un nuevo archivo o abre un archivo
`a+' Idem que `a' nicamente que el archivo es abierto para lectura y escritura
ARCHIVOS DE E/S
DECLARACIN fopen
SINTAXIS
Ejemplo
fid = fopen(`archivo.dat','r')
fid = -1, error
0, lectura/escritura normal
[fid, mensaje = fopen(`archivo.dat','r')
DECLARACIN fclose
SINTAXIS
status = fclose(fid)

o

status = fclose (`all') cierra
todos los archivos abiertos
DECLARACIN fread
SINTAXIS
Lee un archivo abierto con una precisin
ndicada

fread(fid,registros,'precision')

registros

`char' o `uchar'
`short' o `long'
`float' o `double'

Ejemplo:

A = fread(fid,10,'float')
fwrite(fid,A,'short')
DECLARACIN fwrite
SINTAXIS
Salida con formato

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

Formato
%s - cadena decimal
%d - nmero decimal
%f - punto flotante
% g - formato g
DECLARACIN fprintf
Para que los programas en MATLAB ejecuten ms rpido, debemos vectorizar
estos siempre que sea posible. Esto es, debemos convertir los ciclos for y while a
operaciones de vectores de matrices. Por ejemplo, un modo de calcular la
funcin "sin" para 1001 nmeros entre 1 y 10 es:

i = 0;
for t = 0:.01:10
i = i + 1;
y(i) = sin(t);
end

Una versin vectorizada del mismo cdigo es

t = 0:.01:10; y = sin(t);

En una computadora lenta, el primer ejemplo tom 15 segundos, mientras que el
segundo tom 0.6 segundos.
VECTORIZACIN DE ALGORITMOS Y ESTRUCTURAS
(for, while)
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
VECTORES Pre-Asignados
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
SINTAXIS
t=0:dt:per;
fi=sin(wo*t);

plot crea una grfica de vectores columnas de matrices.
loglog crea una grfica utilizando una escala logartmica para ambos ejes.
semilogx crea una grfica utilizando una escala logartmica para el eje-x y
una escala lineal para el eje-y.
semilogy crea una grfica utilizando una escala logartmica para el eje-y y
una escala lineal para el eje-x.

Puedes aadir ttulos, encabezamientos de ejes, lneas entre cortadas y texto a
tus grficas utilizando:

tittle aade ttulo a la grfica
xlabel aade encabezamiento al eje-x
ylabel aade encabezamiento al eje-y
text aade una cadena de texto en una localizacin especfica
gtext aade texto a la grfica utilizando el ratn
grid crea lneas entrecortadas

GRFICAS EN DOS DIMENSIONES
FUNCIONES ELEMENTALES PARA GRFICAR
Comando 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, plot(y) produce una grfica lineal de los elementos de y
versus el ndice de estos. Si especifica dos vectores como argumentos, plot(x,
y) produce una grfica de y versus x.
CREANDO UNA GRFICA
y amarillo
m magenta
c cyan (azul claro)
r rojo
g verde
b azul
w blanco
k negro
SMBOLO COLOR
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+)')
. punto
o circulo
x marca
+ mas
* asterisco
- slido
: punteado
-. segmento punto
-- segmento
SMBOLO ESTILO DE LNEA
plot(Y) dibuja una lnea para cada columna de Y. El eje-x es encabezado por el
vector ndice de fila, 1:m, donde m es el nmero de filas en Y.

Si plot es usado con dos argumentos y si X Y tienen ms de una fila columna,
entonces:

si Y es una matriz, y x es un vector, plot(x,Y) grafica las filas columnas
de Y versus el vector x;

si X es una matriz y y es un vector, plot(X,y) grafica cada fila columna
de X versus el vector y;

si X y Y son ambas matrices del mismo tamao, plot(X, Y) grafica las
columnas de X versus las columnas de Y.

Tambin puedes usar la funcin plot con mltiples pares de argumentos
matriciales:

plot (X1, Y1, X2, Y2, ...)

Cada par X-Y es graficado, generando lneas mltiples. Los pares diferentes
pueden ser de dimensiones diferentes.
GRAFICANDO MATRICES
Hay diferentes formas de graficar funciones y = f(x). Una de estas formas es
evaluar la funcin en miles de puntos en el intervalo de inters. La siguiente
funcin oscila infinitamente rpido en el intervalo, 0 x 1.

Podemos grficarla como sigue:

x = (0:1/2000:1)';

plot(x, cos(tan(pi*x)))

Para hacer esto ms eficiente podemos usar la funcin fplot la cual concentra su
evaluacin sobre las regiones donde la rapidez de cambio de la funcin es ms
grande.
IMPORTANDO DATOS
Puede importar y graficar datos generados fuera de MATLAB utilizando el comando
load.
GRAFICANDO FUNCIONES MATETICAS
Para evaluar una funcin, se crea un archivo de esta funcin 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 fofx.m. Ahora la instruccin

fplot('fofx', [0 1])

Ver si se pone la grfica.
produce la grfica:

Aqu, fplot usa menos puntos para evaluar la misma funcin a intervalos
ms cerrados en la regin donde la rapidez de cambio es mayor.
hold
Permite aadir lneas al dibujo previo

on Activa hold
off Desactiva hold

Ejemplo

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

x=logspace(-1,3); loglog(x,exp(x))

donde logspace tiene las formas:

logspace(a,b)
logspace(a,b,n)

a,b exponentes de los lmites. Es decir, 10^a y 10^b
SINTAXIS

a) loglog(x,y)
b) loglog(x,y,'tipo_lnea')
c) loglog(x1',y1','tipo_lnea_1',...,
xn,yn,'tipo_lnea_n')
loglog
Dibuja la pantalla en mxn subdivisioens, numeradas por el parmetro p, de
izquierda a derecha, iniciando por la fila superior

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

polar
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
ngulo 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',[-30 30],60,2)
fplot
Colorea con sombreado el interior de una curva o polgono

SINTAXIS

colormap(colorbase)

donde colorbase es:

gray
hot
cool
copper
pink
colormap
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

fill(y,x,y) => sombreado vertical
GRFICOS EN 3 DIMENSIONES
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.*exp(-x^2-y^2); ...

mesh(Z)

x=-8:0.5,8; y=x; [x,y]=meshgrid(x,y);...

R=sqrt(x.^2+y.^2)+0.001; z=sin(R)./R;...

mesh(z)
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)
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
mesh, meshc y meshz
Dibujan una superficie de malla tridimensional, crando
una perspectiva del dibujo, sobre y bajo el plano de
referencia.
SINTAXIS
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 Sintaxis que surf
Aade un plano de referencia o cortina al dibujo

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)
meshz
surf, surfc
Ejemplo

[x,y]=meshgrid(-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)
Matriz hadamard compuesta de 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
hadamard
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')
i) axis(`on')
axis
Escala y apariencia de los ejes
SINTAXIS
a) load archivo
b) load archivo.ext

donde:

ext - extensin
rand matrices y nmeros aleatorios
distribuidos uniformemente
SINTAXIS
a) rand(n) - matriz de nxn
b) rnad(m,n) - matriz de mxn
Ejemplo

fill3(rand(20), rand(20), rand(20), rand(20))
load
carga en el area de trabajo un archivo
(imagen, sonido, datos, etc)
SINTAXIS
Ejemplo

load clown
convierte un vector en sonido
(en computadoras sparc y macintosh)
sound
load train

sound(y,Fs)

t=(0:length(y)-1)/Fs;

plot(t,y)
SINTAXIS
donde:
Fs frecuencia especificada en Hz

Ejemplo
a) sound(y)
b) sound(y,Fs)
Archivos de disco
El simbolo "!" le indica a MATLAB que el resto de la

lnea de entrada es un comando para el sistema operativo.

Por ejemplo,

! edt darwin.m


invoca un editor llamado edt en un archivo llamado

darwin.m. Luego que este programa sea completado, el

sistema operativo devuelve el control a MATLAB.
Ejecutando Programas Externos
Puedes introducir datos de otros programas a MATLAB

por varios mtodos. Similarmente, puedes exportar datos

de MATLAB a otros programas. Tambin puedes hacer que tus

programas manipulen datos directamente en archivos-MAT, el

cal es el formato de archivo utilizado por MATLAB. Para

informacin acerca de las tcnicas utilizadas para importar

y exportar datos consulte la seccin de Importando y

Exportando Datos de la gua de MATLAB utilice al comando

help de MATLAB.
Importando y Exportando Datos
axis, all, any, bar, break, brighten, clf, for, colormap,

conj, contour, contour3, det, diag, else, elseif, eig, expm,

fclose, fill, fill3, fft, fftn, function, fopen, fplot,

fread, fwrite, grid, gtext, hadamard, hold, if, ifft, ifftn,

imag, image, inv, loglog, load, lu, mesh, meshc, meshz,

meshgrid, ode23, ode45, peaks, plot, plot3, poly, reshape,

rot90, sphere, tril, triu, pascal, polar, real, toplitz,

rand, reshape, semilog, semilogy, shading (flat interp

faceted), size, sound, stairs, subplot, surf, surfc, surfl,

text, title, xlabel, ylabel, while, zeros.
INDICE ALFABETICO
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 extensin de MatLab, adiciona muchas caractersticas
especficas a los sistemas dinmicos, es anexo a MatLab y
est disponible mientras se ejecuta una simulacin.

Simulink tiene dos fases de uso:

1) La definicin del modelo: es construir el modelo a
partir de elementos bsicos construidos previamente
tal como, integradores, bloques de ganancia o
servomotores.
2) El anlisis del modelo: realizar la simulacin,
linealizacin y determinar el punto de equilibrio de
un modelo previamente definido.
Simulink
El modelo Simulink usa diferentes clases de ventanas llamadas

ventanas de diagramas de bloques. Se puede crear y editar un

modelo grficamente usando el ratn.


Simulink puede simular ecuaciones diferenciales continuas y

ecuaciones diferenciales discretas. Esto significa que se

puede modelar sistemas continuos en el tiempo, discretos en

el tiempo o sistemas hbridos.


Simulink usa diagramas de bloques para representar sistemas

dinmicos. La ventana principal de Simulink se activa

escribiendo simulink en la lnea de comandos de MatLab
Una vez se ha creado un modelo dinmico en Simulink,
se puede invocar el generador de cdigo-C que permite
convertir el diagrama de bloques implementado en un
cdigo C. Este puede ser til para varios propsitos:
puede ser usado para control en tiempo real, simulacin
en tiempo real o simulacin acelerada en tiempo no real.
Sus aplicaciones pueden ser control de movimiento,
control de procesos, sistemas automotores, equipos
mdicos, robtica, etc.


El cdigo-C es diseado tal que puede ser ejecutado en
tiempo real. No requiere ser escrito manualmente por un
programador pues es creado a nivel de diagramas de
bloques en Simulink. El cdigo generado puede correr
sobre un amplio rango de hardware ubicado en estaciones
de trabajo, PC o microprocesadores. Este cdigo es la
forma en la que puede usare el Simulink para adquisicin
de datos.
GENERADOR DE CDIGO-C EN SIMULINK
Comandos de MatLab
help On-line documentation.
what Directory listing of M-, MAT- and MEX-files.
type List M-file.
Lookfor Keyword search through the HELP entries.
which Locate functions and files.
demo Run demos.
path Control MATLAB's search path.
Managing commands and functions:
Managing variables and the workspace:
who List current variables.
whos List current variables, long form.
load Retrieve variables from disk.
save Save workspace variables to disk.
clear Clear variables and functions from memory.
pack Consolidate workspace memory.
size Size of matrix.
Length Length of vector.
disp Display matrix or text.
cd Change current working directory.
dir Directory listing.
delete Delete file.
getenv Get environment value.
! Execute operating system command.
unix Execute operating system command & return result.
diary Save text of MATLAB session.
Working with files and the operating system:
Controlling the command window:
cedit Set command line edit/recall facility parameters.
clc Clear command window.
home Send cursor home.
format Set output format.
echo Echo commands inside script files.
more Control paged output in command window.
quit Terminate MATLAB.
startup M-file executed when MATLAB is invoked.
matlabrc Master startup M-file.
Starting and quitting from MATLAB:
General information:
info Information about MATLAB and The MathWorks,
Inc.
subscribe Become subscribing user of MATLAB.
hostid MATLAB server host identification number.
whatsnew Information about new features not yet
documented.
ver MATLAB, SIMULINK, and TOOLBOX version
information.
+ Plus arith
- Minus arith
* Matrix multiplication arith
.* Array multiplication arith
^ Matrix power arith
.^ Array power arith
\ Backslash or left division slash
/ Slash or right division slash
./ Array division slash
Char Name HELP topic
Operators and special characters:
: Colon colon
( ) Parentheses paren
[ ] Brackets paren
. Decimal point punct
.. Parent directory punct
... Continuation punct
, Comma punct
; Semicolon punct
% Comment punct
! Exclamation point punct
' Transpose and quote punct
= Assignment punct
== Equality relop
< > Relational operators relop
& Logical AND relop
| Logical OR relop
~ Logical NOT relop
kron Kronecker tensor product kron
exist Check if variables or functions are defined.
any True if any element of vector is true.
all True if all elements of vector are true.
find Find indices of non-zero elements.
isnan True for Not-A-Number.
isinf True for infinite elements.
finite True for finite elements.
isempty True for empty matrix.
issparse True for sparse matrix.
isstr True for text string.
isglobal True for global variables.
xor Logical EXCLUSIVE OR xor
Logical characteristics:
append Append system dynamics.
augstate Augment states as outputs.
blkbuild Build state-space system from block diagram.
cloop Close loops of system.
connect Block diagram modeling.
conv Convolution of two polynomials.
destim Form discrete state estimator from gain matrix.
dreg Form discrete controller/estimator from gain
matrices.
drmodel Generate random discrete model.
estim Form continuous state estimator from gain matrix.
feedback Feedback system connection.
ord2 Generate A,B,C,D for a second-order system.
pade Pade approximation to time delay.
parallel Parallel system connection.
reg Form continuous controller/estimator from gain
matrices.
rmodel Generate random continuous model.
series Series system connection.
ssdelete Delete inputs, outputs, or states from model.
ssselect Select subsystem from larger system.
Model building:
Control System Toolbox Commands:
c2d Continuous to discrete-time conversion.
c2dm Continuous to discrete-time conversion
with method.
c2dt Continuous to discrete conversion with delay.
d2c Discrete to continuous-time conversion.
d2cm Discrete to continuous-time conversion
with method.
poly Roots to polynomial conversion.
residue Partial fraction expansion.
ss2tf State-space to transfer function conversion.
ss2zp State-space to zero-pole conversion.
tf2ss Transfer function to state-space conversion.
tf2zp Transfer function to zero-pole conversion.
zp2tf Zero-pole to transfer function conversion.
zp2ss Zero-pole to state-space conversion.
Model conversions>:
balreal Balanced realization.
dbalreal Discrete balanced realization.
dmodred Discrete model order reduction.
minreal Minimal realization and pole-zero cancellation.
modred Model order reduction.
Model reduction:
canon Canonical form.
ctrbf Controllability staircase form.
obsvf Observability staircase form.
ss2ss Apply similarity transform.
Model realizations:
covar Continuous covariance response to white noise.
ctrb Controllability matrix.
damp Damping factors and natural frequencies.
dcgain Continuous steady state (D.C.) gain.
dcovar Discrete covariance response to white noise.
ddamp Discrete damping factors and natural
frequencies.
ddcgain Discrete steady state (D.C.) gain.
dgram Discrete controllability and observability
gramians.
dsort Sort discrete eigenvalues by magnitude.
eig Eigenvalues and eigenvectors.
esort Sort continuous eigenvalues by real part.
gram Controllability and observability gramians.
obsv Observability matrix.
printsys Display system in formatted form.
roots Polynomial roots.
tzero Transmission zeros.
tzero2 Transmission zeros using random perturbation
method.
Model properties:
dimpulse Discrete unit sample response.
dinitial Discrete initial condition response.
dlsim Discrete simulation to arbitrary inputs.
dstep Discrete step response.
filter SISO z-transform simulation.
impulse Impulse response.
initial Continuous initial condition response.
lsim Continuous simulation to arbitrary inputs.
ltitr Low level time response function.
step Step response.
stepfun Step function.
Time response:
bode Bode plot (frequency response).
dbode Discrete Bode plot (frequency response).
dnichols Discrete Nichols plot.
dnyquist Discrete Nyquist plot.
dsigma Discrete singular value frequency plot.
fbode Fast Bode plot for continuous systems.
freqs Laplace-transform frequency response.
freqz Z-transform frequency response.
ltifr Low level frequency response function.
margin Gain and phase margins.
nichols Nichols plot.
ngrid Draw grid lines for Nichols plot.
nyquist Nyquist plot.
sigma Singular value frequency plot.
Frequency response:
Root locus:
pzmap Pole-zero map.
rlocfind Interactive root locus gain determination.
rlocus Evans root-locus.
sgrid Draw continuous root locus wn,z grid.
zgrid Draw discrete root locus wn,z grid.
acker SISO pole placement.
dlqe Discrete linear-quadratic estimator design.
dlqew General discrete linear quadratic estimator
design.
dlqr Discrete linear-quadratic regulator design.
dlqry Discrete regulator design with weighting on
outputs.
lqe Linear-quadratic estimator design.
lqed Discrete estimator design from continuous cost
function.
lqe2 Linear quadratic estimator design using Schur
method.
lqew General linear-quadratic estimator design.
lqr Linear-quadratic regulator design.
lqrd Discrete regulator design from continuous cost
function.
lqry Regulator design with weighting on outputs.
lqr2 Linear quadratic regulator design using Schur
method.
place Pole placement.
Gain selection:
are Algebraic Riccati equation solution.
dlyap Discrete Lyapunov equation solution.
lyap Continuous Lyapunov equation solution.
lyap2 Lyapunov equation solution using
diagonalization.
Equation solution:
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 Kalman filter design and simulation.
Demonstrations:
Para obtener la respuesta de un sistema en el tiempo ante
una entrada estndar, debe primero definirse el sistema.
Para ello puede definirse en MatLab la funcin de
transferencia propia del sistema o las ecuaciones de estado.

La funcin de transferencia de un sistema es una relacin
formada por un numerador y un denominador:

En MatLab debe definirse el numerador Y(s) y el denominador
U(s) como vectores, cuyos elementos son los coeficientes de
los polinomios del numerador y del denominador en potencias
decrecientes de S. Por ejemplo, para definir la funcin de
transferencia:

>>y=[1];

>>u=[1 0.25 1];
APLICANDO MATLAB AL CONTROL DE PROCESOS
RESPUESTA EN EL DOMINIO DEL TIEMPO
Para determinar la respuesta en el tiempo para una entrada
escaln unitario de este sistema se usa el comandos step
indicando el vector del numerador y del denominador entre
parntesis. step(num,den)

>>step(y,u)

MatLab presenta la respuesta en el tiempo en la ventana de
figuras:

Puede definirse el tiempo en el cual se desea la respuesta
al escaln, mediante un vector de tiempo T, step(num,den,T)

>>t=0:0.1:20;

>>step(y,u,t)

Otra forma de definir el sistema en MatLab es usando las
ecuaciones de estado de la forma:

x = Ax + Bu

y = Cx + Du

MatLab permite hacer la conversin de una funcin de
transferencia a su equivalente en ecuaciones de estado,
mediante el comando tf2ss. Se deben especificar las cuatro
matrices de estado de la forma:

[A,B,C,D]=tf2ss(num,den)
Se define t como un vector cuyo elemento inicial es 0, su
elemento final es 20 y existen elementos que son el incremento
desde 0 hasta 20 de 0.1 en 0.1. Al ejecutar el comando step
para y y u se obtiene en la ventana de figuras la respuesta
escaln para los primeros 20 segundos.
Para el ejemplo anterior tenemos:

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

a =
-0.2500 -1.0000
1.0000 0

b =
1
0

c =
0 1

d =
0

Se puede hacer la conversin de una ecuacin de estado a su
equivalente funcin de transferencia, mediante el comando
ss2tf. Se deben especificar los vectores para almacenar los
coeficientes del polinomio numerador y del denominador.
Su SINTAXIS es: [num,den]=ss2tf(a,b,c,d)

Ejemplo

>>[num,den]=ss2tf(a,b,c,d)

num =
0 0 1.0000

den =
1.0000 0.2500 1.0000

Para obtener la respuesta escaln de un sistema a partir de
las ecuaciones de estado se usa el comando step con la

SINTAXIS: step(A,B,C,D)

Ejemplo

>>step(a,b,c,d)
Para obtener la respuesta en el tiempo para una entrada
impulso unitario se usa el comando impulse, con Sintaxis
idntica a la utilizada con el comando step:

Si se define el sistema en MatLab por los polinomios del
numerador y denominador de la funcin de transferencia
tenemos:

>> y=[1 5 4];

>> u=[1 6 11 6];

>> impulse(y,u)
Si por el contrario el sistema se define en MatLab por las
ecuaciones de estado:

>> [A,B,C,D]=tf2ss(y,u)

A =
-6 -11 -6
1 0 0
0 1 0

B =
1
0
0

C =
1 5 4

D =
0

>> impulse(A,B,C,D)
En ambos casos, MatLab presenta la respuesta en el tiempo en
la ventana de figuras:

MatLab permite, adems de obtener la respuesta en el tiempo
para una entrada escaln o impulso, tambin obtener respuesta
para otras entradas tal como rampas o sinusoides. El comando
lsim permite obtener la respuesta en el tiempo para un sistema
con una entrada u, donde u se define como una funcin del tiempo.

La Sintaxis de este comando es: lsim(A,B,C,D,U,T) usando las
matrices de estado o lsim(NUM,DEN,U,T) usando la funcin de
transferencia.

Para obtener la respuesta en el tiempo para una funcin rampa,
se define U de la siguiente forma:

>> 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 hacer U=T se est definiendo la funcin rampa. T es el
vector de tiempo variando desde 0 hasta 10

seg. NUM y DEN son los vectores de los coeficientes
decrecientes en potencia de S de los polinomios del numerador
y del denominador respectivamente. En la variable Y se
almacena la salida del sistema en funcin del tiempo T. El
comando plot permite presentar en la ventana de figuras la
variable Y (salida) y la entrada U (rampa) en funcin del
tiempo, obtenindose:
Para el estudio de un sistema en el dominio de la
frecuencia existen tres herramientas disponibles en
MatLab como son: los diagramas de Bode, de Nyquist
y de Nichols.

Para obtener el diagrama de Bode de una funcin de
transferencia, se definen dos vectores cuyos elementos
son los coeficientes de los polinomios del numerador y
del denominador en potencias decrecientes de S. Estos
vectores son usados en el comando bode con la siguiente

SINTAXIS:

bode(num,den).
RESPUESTA EN EL DOMINIO DE LA FRECUENCIA
Se define la funcin de transferencia:

Ejemplo

>> y=[1];

>> u=[1 0.25 1];

>> bode(y,u)


MatLab presenta el diagrama de bode en la ventana de figuras:

Otro formato mediante el cual el comando bode presenta el
diagrama de bode, es a travs de las ecuaciones de estado
representadas por las matrices de estado (A,B,C,D). Su
SINTAXIS es:

bode(A,B,C,D).
Para especificar un rango deseado de frecuencias en las
cuales se desea obtener el diagrama de Bode, se emplea un
vector de frecuencias en el que se especifica la frecuencia
inicial, el incremento y la frecuencia final. Por ejemplo:

>> W=0:0.1:100;

>> bode(y,u,W)

Este comando muestra el diagrama de Bode entre 0 y 100 rad/s.

Otra herramienta de anlisis en el dominio en la frecuencia
que ofrece MatLab es el diagrama de Nichols. Para obtener el
diagrama de Nichols se utiliza el comando nichols, cuya
Sintaxis es idntica a la del comando bode: nichols(A,B,C,D,W)
si se emplean las matrices de estado o nichols(num,den,W) si
se emplea la funcin de transferencia.

Si se define y como el vector de los coeficientes del
polinomio 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 diagrama de
Nichols:

Otra herramienta de anlisis en el dominio en la frecuencia
que ofrece MatLab es el diagrama de Nyquist. Para obtenerlo
se utiliza el comando nyquist, cuya Sintaxis es idntica a la
del comando bode y nichols: nyquist(A,B,C,D,W) si se emplean
las matrices de estado o nyquist(num,den,W) si se emplea la
funcin de transferencia.
Si se define y como el vector de los coeficientes del
polinomio del numerador y u como el del denominador:

>> y=[1];

>> u=[1 6 5];

>> nyquist(y,u)

MatLab presenta en la ventana de figuras el diagrama de
Nyquist:

Para obtener el margen de ganancia, el margen de fase, la
frecuencia de cruce de ganancia y la frecuencia de cruce de
fase MatLab dispone del comando margin. Las diferentes
formas de utilizar este comando son:

[Gm,Pm,Wcg,Wcp] = MARGIN(A,B,C,D) retorna los valores de margen
de ganancia (Gm), margen de fase (Pm), frecuencia de cruce de
ganancia (Wcg) y la frecuencia de cruce de fase (Wcp) cuando se
trabaja con las matrices de estado (A,B,C,D).
[Gm,Pm,Wcg,Wcp] = MARGIN(NUM,DEN) cuando se trabaja con la
funcin de transferencia.

[Gm,Pm,Wcg,Wcp] = MARGIN(MAG,PHASE,W) toma los vectores de
magnitud, fase y frecuencia del diagrama de Bode.

MARGIN(A,B,C,D) dibuja el diagrama de Bode y muestra con lneas
verticales los mrgenes deganancia y de fase.

>> num=10;
>> den=[1 0.25 1];
>> [Gm,Pm,Wcg,Wcp] =margin(num,den)
Wcg =
NaN

Wcp =
3.3114
>> margin(num,den)
Gm =
Inf

Pm =
4.7487
Para obtener el lugar de las races de un sistema como el
mostrado en el siguiente diagrama:

Se debe determinar su ecuacin caracterstica, la cual es
de la forma:

Para obtener el lugar de las races, MatLab dispone del
comando rlocus. Las diferentes

SINTAXIS para utilizar este comando son:

rlocus(NUM,DEN) calcula 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
generar automticamente un conjunto de valores de la
ganancia K.
LUGAR DE LAS RACES
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 con 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.

Para la siguiente forma modificada de la ecuacin
caracterstica de un sistema se desea hallar el lugar de
las races mediante MatLab:
>> num=[0,0,0,1];

>> den=[1,3,2,0];

>> rlocus(num,den)

MatLab dispone del comando rlocfind que permite determinar
los polos del sistema para una valor determinado de k. Su
SINTAXIS es:

[K,POLES] = rlocfind(num,den) permite determinar los polos
para un valor determinado de k, cuando se trabaja con la
funcin de transferencia. Por medio del curso en el lugar de
las races se selecciona una localizacin, MatLab retorna el
valor de k para esta localizacin y los polos asociados a esta
ganancia.

Cuando se trabaja con las matrices de estado, las Sintaxis
para el comando rlocfind es: [K,POLES] = rlocfind(A,B,C,D).
Al ejecutar el comando rlocfind con la funcin de 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.0132 en la parte imaginaria.

>> [k,poles]=rlocfind(num,den)

Select a point in the graphics window

selected_point =
-2.4623 - 0.0132i

k =
1.6655

poles =
-2.4625
-0.2688 + 0.7773i
-0.2688 - 0.7773i
Para seleccionar el punto en el cual calcular los polos
del lugar de las races sin usar el cursor 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.555i.

Paper semilogartmico gratis: papelbod.m

Para cotejar sus diagramas de Bode:

>> bode(num,den)

donde num y den son vectores que contienen los coeficientes
del numerador y denominador de H(s) en orden de potencias
descendentes de s.

Nota: Esto da las curvas exactas, no las aproximaciones
asintticas con lneas rectas.

Ejemplo: Para ,

Escribimos

>> bode([158.11 15.811],[1 5 0])
Trucos en MATLAB
Precaucin: El punto "." puede significar operacin
elemento-por-elemento o punto decimal.

Cuando escribimos un dgito pegado al punto como "2.", el
interpretador cree que es el nmero "2.0". Entonces si
queremos calcular A2B2, donde A y B son arreglos y no
matrices (o sea, queremos operacin elemento-por-elemento),
debemos escribir

>> A.^2 .*B.^2 (notar el espacio despus del primer 2)

y no

>> A.^2.*B.^2

Para remover ejes de la grfica:

>> set(gca,'Visible','off')

o simplemente

>> axis off
Para cambiar el color de trasfondo de la grfica:

>> whitebg('c')

donde c es el cdigo del color descrito en help plot.

Para establecer propiedades de la grfica, es ms fcil
hacerlo al crearla que despus. Por ejemplo, para
graficar con una lnea gruesa,

>> plot(x,y,'linewidth',3) (En el momento de creacin)

>> set(get(gca,'children'),'linewidth',3) (Despus de creada)

S-ar putea să vă placă și