Sie sind auf Seite 1von 11

1

Ingeniera de Control I
Laboratorio N 01_1
Grficos en Matlab

La Esttica de los Grficos
Ms de un Grfico en una ventana (Subplot)
Cambiando los ejes
Agregar Texto

de las funciones ms importantes en Matlab es la funcin plot. Plot tambin parece ser una
de las ms sencillas funciones para aprender a usar. La sintaxis bsica de la funcin es escribir
el siguiente comando en la ventana de comandos del Matlab o en un archivo-m.

plot(x,y)

Este comando plotear los elementos del vector x en el eje horizontal de una figura, y los
elementos del vector y en el eje vertical de la figura. Por defecto, cada vez que se use el
comando plot , se borrar la figura que estaba, quedando solo la nueva; discutiremos cmo
forzar esto ms abajo. Si quisiramos graficar la sencilla frmula lineal:

y=3x

Deberamos crear un archivo-m con las siguientes lneas de cdigo:

x = 0:0.1:100;
y = 3*x;
plot(x,y)

lo que generar la figura siguiente,


Una cosa a tener en cuenta cuando se usa el comando plot es que los vectores x e y deben ser
la misma longitud. La otra dimensin puede variar. Matlab puede graficar un vector 1 x n
versus un vector n x 1, un vector 1 x n versus una matriz 2 x n, (obtendr dos lneas), el
largo n es el mismo para ambos vectores.

El comando plot puede tambin usarse con solamente un vector como entrada o parmetro.

0 10 20 30 40 50 60 70 80 90 100
0
50
100
150
200
250
300
2
En ese caso las columnas del vector se grafican versus sus ndices (el vector 1:1:n se usar
para el eje horizontal). Si el vector de entrada contiene nmeros complejos, Matlab dibuja la
parte real de cada elemento (en el eje x) versus la parte imaginaria (en el eje y).
La Esttica de los Grficos

El color y el marcador de un grfico se pueden cambiar agregando un tercer parmetro (entre
apstrofo 'esto') al comando plot. por ejemplo, para graficar la funcin de arriba con una
lnea punteada roja, debera cambiarse el archivo-m a:

x = 0:0.1:100;
y = 3*x;
plot(x,y,'r:')

Ahora el grfico se ve:

La tercera entrada consiste de uno a tres caracteres que especifican un color y/o o un tipo de
marcador. La lista de colores y marcadores es como sigue:

y amarillo . punto
m violeta o circulo
c celeste x cruz x
r rojo + suma
g verde - solido
b azul * estrella
w blanco : punteado
k negro -. punto y raya
-- a trazos

Se puede graficar ms de una funcin en la misma figura. Digamos que quisiera graficarlas
ondas seno y coseno en el mismo conjunto de ejes, usando diferentes colores y marcadores
para cada una. Puede usarse el siguiente archivo-m para lograrlo:

x = linspace(0,2*pi,50);
y = sin(x);
z = cos(x);
plot(x,y,'r', x,z,'gx')

Obtendr la figura siguiente de las ondas seno y coseno, con el seno en rojo slido y el coseno
en azul con cruces:
0 10 20 30 40 50 60 70 80 90 100
0
50
100
150
200
250
300
3


Agregando ms juegos de parmetros al comando plot, puede graficar tantas funciones en la
misma figura como se quiera. Cuando plotea muchas cosas en el mismo grfico es til
diferenciar las diferentes funciones mediante color y marcadores.

Puede lograrse el mismo efecto usando los comandos hold on y hold off. Una figura como
la que se muestra en el caso anterior puede generarse mediante el siguiente archivo-m:

x = linspace(0,2*pi,50);
y = sin(x);
plot(x,y,'r')
z = cos(x);
hold on
plot(x,z,'gx')
hold off

Recuerde que siempre que use el comando hold on, todas las figuras sern generadas en un
conjunto de ejes, sin borrarse la figura anterior, hasta que se aplique el comando hold off.

Ms de un Grfico en una ventana (Subplot)

En una misma figura puede ponerse ms de una lnea empleando el comando subplot. El
comando subplot le permite separar la figura en tantas figuras como se quiera, y ponerlas
todas en una figura.

Para usar este comando, Copie la siguiente lnea de cdigo e insrtela en la ventana de
comandos del Matlab o en un archivo-m:

subplot(m,n,p)

Este comando divide la figura en una matriz de m renglones y n columnas, por lo tanto crea
mxn grficos en una figura. TEl p-simo grfico es seleccionado como el grfico activo (solo
hay uno a la vez por figura).

Por ejemplo, suponga quisiera ver una senoide, un coseno, y una onda tangente graficadas en
la misma figura, pero no en los mismos ejes.

0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
4
El siguiente archivo-m lo har:

x = linspace(0,2*pi,50);
y = sin(x);
z = cos(x);
w = tan(x);
subplot(2,2,1)
plot(x,y)
subplot(2,2,2)
plot(x,z)
subplot(2,2,3)
plot(x,w)


como puede ver, habr solo tres grficos , a pesar de haber creado una matriz de 2 x 2 , de 4
subplots. No tiene porqu rellenar todas las subfiguras que ha creado, pero Matlab dejar un
lugar para cada figura en la matriz. Pudo haber hecho sencillamente otro grfico mediante la
lnea subplot(2,2,4) . Las subplots se ordenan de la misma manera como se lee un libro. La
primera subplot est arriba a la izquierda, la siguiente est a su derecha. Cuando todas las
columnas de ese rengln estn ocupadas, se rellena la columna de la izquierda del prximo
rengln de abajo (asumiendo que genera los subplots en el orden 1, 2, 3,..).

Una cosa a notar acerca del comando subplot es que cada comando plot ejecutado despus
ubicar la figura en la ltima posicin que se especific en el ltimo comando subplot,
borrando la figura que haba. Por ejemplo, en el archivo-m previo, si se emitiera un comando
plot ms tarde en el mismo, ste se graficar en la tercera posicin en la ventana grfica,
borrando la lnea de la tangente. Para resolver este problema, la figura debera ser borrada
(usando clf), o debera especificarse una nueva figura (mediante el comando figure).

Cambiando los ejes

Ahora que ha encontrado diversos modos de graficar funciones, puede personalizar sus
ploteos para lograr lo que desea. El modo ms frecuente de hacerlo es mediante el comando
axis. El comando axis cambia los ejes del diagrama actual, de modo que se muestra slo la
0 2 4 6 8
-1
-0.5
0
0.5
1
0 2 4 6 8
-1
-0.5
0
0.5
1
0 2 4 6 8
-40
-20
0
20
40
5
parte del eje que se desea. El comando axis se usa ingresando el siguiente comando justo
despus del comando plot (o cualquier comando que tiene un plot como una de sus salidas):

axis([xmin, xmax, ymin, ymax])

Por ejemplo, suponga querer ver un grfico de la funcin y=exp(5t) -1. Si entra lo siguiente al
Matlab

t=0:0.01:5;
y=exp(5*t)-1;
plot(t,y)


debera tener la figura siguiente:

Como puede ver, el grfico tiende a infinito. Atendiendo al eje y (escala: 8e10), es claro que
no puede verse mucho en este grfico. Para tener una mejor idea de lo que est pasando en el
ploteo, miremos el primer segundo de esta funcin. Escriba el siguiente comando en la
ventana de comandos del Matlab del programa anterior.

axis([0, 1, 0, 50])

y debera obtener la figura siguiente:

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0
1
2
3
4
5
6
7
8
x 10
10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
5
10
15
20
25
30
35
40
45
50
6
Ahora esta figura es mucho ms valiosa. Puede verse ms claro lo que pasa cuando la funcin
va hacia infinito. Puede personalizar los ejes a sus necesidades. Cuando se usa el comando
subplot, pueden cambiarse los ejes de cada subplot emitiendo un comando axis antes del
prximo comando subplot. Hay ms usos del comando axis que puede ver si tipea help
axis en la ventana de comandos del Matlab.
Agregar Texto
Otra cosa que puede ser importante en sus grficos es el etiquetado. Puede darle un ttulo al
grfico (con el comando title), etiqueta al eje x (con el comando xlabel), o al eje y (con el
comando ylabel), as como incluir texto en la figura presente. Todos los comandos
mencionados se emiten luego de ejecutarse el comando plot actual. Se ubicar un ttulo,
centrado, por encima del grfico con el comando: title('cadena de ttulo'). La etiqueta
al eje x se agrega con el comando siguiente: xlabel('cadena para el eje x'). La
etiqueta del eje y se emite con el siguiente comando: ylabel('cadena para el eje y').

Ms an, puede incorporarse texto en el mismo grfico de dos maneras: el comando text y el
comando gtext. El primer comando requiere conocer las coordenadas donde quiere ubicar la
cadena de texto. El comando es text(xcor,ycor,'textstring'). Para usar el otro
comando, no necesita saber las coordenadas exactas. El comando es gtext('textstring'),
y entonces slo mueva la mira en cruz al lugar deseado con el mouse, y haga clic en la
posicin que quiere que se inserte el texto.

Para mostrarle mejor cmo usar el etiquetado, tome el programa del grfico de la respuesta de
la figura anterior y agregue el programa siguiente. Asumiendo que ya ha cambiado los ejes,
copiando las lneas siguientes luego del comando axis, se tendr todas las etiquetas puestas
en el grfico:

title('y=exp(5t)-1')
xlabel('tiempo (seg.)')
ylabel('posicin')
gtext('para poner etiqueta')

El texto "etiqueta innecesaria" se ubic a la derecha por encima de la posicin donde se hace
clic. La figura debera verse as:


0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
5
10
15
20
25
30
35
40
45
50
y=exp(5t)-1
tiempo (seg.)
p
o
s
i
c
i

n
para poner etiqueta
7
Otros comandos que pueden usarse con el comando plot son:

clf (borra el grfico actual, lo deja en blanco)
figure (abre una nueva ventana figure para graficar, y se preserva la figura previa)
close (cierra la ventana de la figura actual)
loglog (igual que plot, excepto que ambos ejes se escalan en Log10)
semilogx (igual que plot, excepto que el eje x se escala en Log10)
semilogy (igual que plot, excepto que el eje y se escala en Log10)
grid (agrega una grilla al grfico)

Est claro que estos ejemplos de laboratorio no es un curso completo para graficar con Matlab,
pero le dar dar un buen comienzo.

Introduccin a los Archivos-M

Qu es un Archivo-m?

Un archivo-m, o script file, es un simple archivo de texto donde se introducen comandos o
instrucciones de Matlab. Cuando se corre el archivo, Matlab lee los comandos y los ejecuta
secuencialmente exactamente como si se los estuviera tipiando en ese momento en el prompt.

Todo archivo-m debe tener extensin '.m' (ej. plot.m).

Si crea un nuevo archivo-m con el nombre de uno que ya existe, Matlab elegir aquel que
aparezca primero en el listado de paths (help path para ms informacin). Para facilitarse la
vida, siempre cree sus archivos-m con nombre distinto que los existentes.

Para ver si un archivo-m existe, tipee help nombre_archivo.m en el prompt del Matlab.

Para qu usar los archivos-m?

Ingresar los comandos en el prompt (>>) del Matlab es rpido y eficiente si el problema es
simple. Sin embargo, a medida que aumenta la cantidad de comandos, o si se requiere
cambiar los valores de las variables cuando se trabaja con prueba-error; tipear los comandos
una y otra vez se torna tedioso.

De manera que los archivos-m resultan de gran ayuda y muy necesarios en estos casos.

Cmo crear, salvar o abrir un archivo-m?

Si est usando PC:

Para crear un archivo-m, elija New en el men File y seleccione archivo-m. Este
procedimiento levanta el editor de texto en el cual se pueden escribir los comandos.
Para salvarlo, simplemente pinche en el men File y elija Save (recuerde salvar con
extensin '.m' ).
Para abrir un archivo-m existente vaya al men File y elija Open.


8
Cmo correr un archivo-m?

Despus que un archivo-m fue salvado con el nombre filename.m en la carpeta del Matlab,
puede ejecutar los comandos del archivo-m simplemente tipeando filename en el prompt del
Matlab.
Si no quiere correr todos los comandos del archivo-m, puede copiar los que s quiera del
archivo-m y pegarlos en el prompt del Matlab.

Lsim

El comando lsim es bastante similar al comando step (en realidad, el comando step es
justamente un caso especial de lsim). Dado un sistema descrito ya sea por ecuaciones de
espacio de estado o por una funcin de transferencia, el comando lsim puede correr una
simulacin del sistema usando entradas y condiciones iniciales arbitrarias.

El comando lsim(A,B,C,D,U,T,X0) dibuja la respuesta temporal del sistema lineal:

x = Ax +Bu
y = Cx +u

Esto es, la ecuacin diferencial es integrada desde el tiempo T(0) hasta T(length(T)),
comenzando con las condiciones iniciales X0 y usando la entrada U. El vector de entrada
debe tener el mismo nmero de componentes que el vector tiempo. Si las condiciones
iniciales son nulas, puede omitirse X0.

Suponga que tenemos un sistema descrito por las ecuaciones de espacio de estado de arriba,
con las matrices A, B, C, :

A = [-20 -40 -60
1 0 0
0 1 0];

B = [1
0
0];

C = [0 0 1];
D=0;

Como puede ver de las dimensiones de las matrices, este sistema tiene tres estados, una
entrada, y una salida.

Digamos que quisiramos graficar la respuesta del sistema con condiciones iniciales no-nulas
y sin entrada. Esto puede hacerse de la siguiente manera.

T = 0:0.01:10; % tiempo de simulacin = 10 segundos
U = zeros(size(T)); % entrada nula
X0 = [0.1 0.1 0.1]; % condiciones iniciales del estado
lsim(A, B, C, D, U, T, X0) % simula y dibuja la respuesta (la salida)
9

Cuando el comando lsim es invocado con argumentos a izquierda,

[Y, X] = lsim(A,B,C,D,U,T);

Matlab devuelve la historia temporal de la salida y el estado en las matrices Y y X
respectivamente. No se dibuja nada en pantalla. La matriz Y tiene tantas columnas como
salidas haya y length(T) renglones. X tiene tantas columnas como estados haya y length(T)
renglones. El comando plot puede ser usado entonces para graficar la respuesta.

Grafiquemos ahora la respuesta al escaln para el sistema dado arriba; la entrada U es 1 para
todo tiempo positivo, y las condiciones iniciales son cero.

T = 0:0.01:10; % tiempo de simulacin = 10 segundos
U = ones(size(T)); % u = 1, una entrada escaln
[Y, X] = lsim(A,B,C,D,U,T); % simula
plot(T, Y) % plotea la salida vs. Tiempo
title(Respuesta al escalon unitario)


0 1 2 3 4 5 6 7 8 9 10
-0.02
0
0.02
0.04
0.06
0.08
0.1
0.12
Linear Simulation Results
Time (seconds)
A
m
p
l
i
t
u
d
e
0 1 2 3 4 5 6 7 8 9 10
0
0.002
0.004
0.006
0.008
0.01
0.012
0.014
0.016
0.018
0.02
Respuesta al escalon unitario
10
El grfico de arriba muestra la respuesta al escaln del sistema. Podemos tambin graficar la
respuesta del sistema debida a cualquier otra entrada que elijamos. Por ejemplo, si tenemos
una entrada sinusoidal, digamos u(t) = 0.1 sin(5t+1):

T = 0:0.01:10; % tiempo de simulacin = 10 segundos
U = 0.1*sin(5*T+1); % entrada como funcin del tiempo
[Y, X] = lsim(A,B,C,D,U,T); % simula
plot(T, Y) % plotea salida vs. Tiempo
title(Respuesta a una entrada sinusoidal)

Recuerde que la respuesta de estado estacionario de un sistema lineal a una entrada sinusoidal
siempre ser una sinusoide de la misma frecuencia pero con distinta magnitud y fase.

A causa de que cualquier funcin de transferencia puede representarse mediante muchos
conjuntos diferentes de matrices de espacio de estado, un sistema en la forma funcin de
transferencia slo puede simularse con condiciones iniciales nulas.

Ingreso de ecuaciones en Matlab

Podemos poner las ecuaciones de Funcin de Transferencia de arriba en el Matlab definiendo
el numerador y denominador de las Funciones de Transferencia en la forma, nump/denp para
fuerza de entrada actuante y num1/den1 para la entrada de perturbacin, de la funcin de
transferencia estndar G1(s) y G2(s):

G1(s) = nump/denp
G2(s) = num1/den1

Ahora, creemos un nuevo archivo-m e ingrese el siguiente cdigo:

m1=2500;
m2=320;
k1=80000;
k2=500000;
b1 = 350;
b2 = 15020;
0 1 2 3 4 5 6 7 8 9 10
-3
-2
-1
0
1
2
3
4
5
6
x 10
-4
Respuesta a una entrada sinusoidal
11

nump=[(m1+m2) b2 k2];
denp=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2)
(b1*k2)+(b2*k1) k1*k2];
'G(s)1'

printsys(nump,denp)

num1=[-(m1*b2) -(m1*k2) 0 0];
den1=[(m1*m2) (m1*(b1+b2))+(m2*b1) (m1*(k1+k2))+(m2*k1)+(b1*b2)
(b1*k2)+(b2*k1) k1*k2];
'G(s)2'

printsys(0.1*num1,den1)

Nota: Con Matlab es posible convertir del espacio de estado a funcin de transferencia, o
viceversa.

Das könnte Ihnen auch gefallen