Está en la página 1de 16

Introduccin a MATLAB

1

Introduccin a MATLAB

MATLAB es el nombre abreviado de MATrix LABoratory. MATLAB es un programa para
realizar clculos numricos con vectores y matrices, pudindose tambin trabajar con
nmeros escalares (tanto reales como complejos), con cadenas de caracteres y con otras
estructuras de informacin. Adems, MATLAB cuenta con un lenguaje de programacin propio.

Desde el punto de vista de control, MATLAB se puede considerar un entorno matemtico de
simulacin que puede utilizarse para codificar modelos y analizar los sistemas modelados.
Permite el estudio de sistemas continuos, discretos, lineales y no lineales en el dominio
temporal y de la frecuencia.

Otra caracterstica de MATLAB es que cuenta con numerosos paquetes adicionales llamados
toolboxes. En el archivo Introduccin a MATLAB

caso que nos ocupa se utilizar el Control System Toolbox, pero es importante tener en
cuenta que existen diversos toolboxes; cada uno de ellos destinado a una aplicacin especfica
(control, estadstica, procesamiento de seales, manejo de lenguaje simblico, etc.).

La presente introduccin se plantea como una gua prctica a fin de permitir la familiarizacin
con los comandos de MATLAB que sern frecuentemente utilizados a lo largo esta materia.

El entorno de operacin de MATLAB

Existen numerosas referencias bibliogrficas (adems del tutorial del programa) en donde se
explica en detalle el entorno operativo de MATLAB (algunas de ellas figuran en el listado de
referencias de este apunte). El objetivo de esta seccin es presentar cada uno de los
componentes del entorno MATLAB y proporcionar una breve descripcin de los mismos:

Command Window: es la ventana principal del programa en donde se ejecutan los comandos
e instrucciones lgicas.

Workspace: Es el espacio de trabajo en donde se almacenan todas las variables definidas a
travs del Command Window. ste puede ser guardado en un archivo binario (*.mat) y
cargado nuevamente, en otra ejecucin del programa.

Command History: Almacena el listado de comandos ejecutados desde el Command
Window de MATLAB. El historial se guarda automticamente, quedando registradas cada una
de las sesiones con fecha y hora. Una opcin interesante, es seleccionar los comandos
relevantes del Command History y generar con ellos un archivo {nombre_arch}.m (secuencias
de comandos, tambin denominadas scripts).

Current Directory: especifica el directorio de trabajo de MATLAB

Listado de comandos tiles

Todos los comandos que figuran a continuacin se ejecutan desde el Command Window de
MATLAB:

help: proporciona ayuda sobre un determinado tem (toolbox, comando, etc.).

Introduccin a MATLAB

2

Ejemplo:

>> help symbolic %proporciona informacin sobre el Symbolic toolbox de
MATLAB.
>> help plot %proporciona informacin sobre el comando PLOT

clc: borra la pantalla del Command Window

clear: limpia las variables del Workspace. Tambin se pueden borrar individualmente
escribiendo:

>> clear nombre_de_la_variable

whos: proporciona un listado de las variables definidas en el Workspace. Podemos preguntar
tambin por variables individuales:

>> whos nombre_de_la_variable

open: permite abrir los archivos que se encuentran en el Current Directory de MATLAB
especificado, por ejemplo:

>> open nombre_del_archivo.m

Manejo de vectores

Vector fila:
>> A=[2,4,5]

bien

>> A=[2 4 5]

Nota: se puede ocultar el resultado de la operacin agregando un punto y coma (;) al final de
la sentencia

Nota: los elementos del vector pueden separarse mediante una coma, o bien mediante un
espacio.

Vector columna:
>> B=[2;4;5]

o bien,

>> B=A'

Nota: El smbolo ('), transpone el vector A para generar el vector columna B. Este comando
tambin puede ser utilizado para generar la transpuesta de una matriz dada.

Vectores con espaciamiento uniforme:

>> A=[1:10] %los valores aumentan sucesivamente una unidad
>> A=[1:2:10] %los valores aumentan sucesivamente en dos unidades)
>> A=[0.1:0.1:1] %los valores se incrementan en 0,1
Introduccin a MATLAB

3

>> A=logspace(1,2,10) %genera 10 puntos entre las dcadas 10^1 y 10^2,
uniformemente espaciados en forma logartmica: [10 10^1.1 10^1.2
10^1.3 10^1.4 10^1.5 10^1.6 10^1.7 10^1.8 10^1.9 10^2]

Vectores de unos y ceros:

>> A=zeros(1,10) %genera un vector fila con ceros
>> B=ones(1,10) %genera un vector fila con unos

Nota: zeros(m,n) genera una matriz de orden mn con todos sus elementos iguales a cero, lo
mismo se aplica a la sentencia: ones (m,n)

Manejo de matrices

Matriz estndar

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

Matrices especiales

Sintaxis Tipo de matriz
>> A=diag(v) matriz diagonal con el vector v como diagonal
>> A=ones(n) matriz de n n con todos los valores iguales a uno
>> A=eye(n) matriz identidad de n n
>> A=rand(n)
matriz de n n con elementos de valor aleatorio entre 0 y 1
(distribucin uniforme)
>> A=randn(n)
matriz de n n cuyos elementos siguen una distribucin normal
(media 0 y varianza 1)

Operaciones con matrices

Sintaxis Operacin
>> C=A*B matriz resultante del producto AB (si dicha operacin es posible)
>> C=A.*B
producto elemento por elemento (si size(A) = size(B), es decir,
si tienen el mismo tamao)
>> inv(A) A^-1,

si A es cuadrada e invertible
>> pinv(A) pseudoinversa de A.
>> C=A\B
inv(A)*B, si existe inv(A): la barra inversa es la divisin por la
izquierda
>> x= A\b
solucin de: Ax = b si existe inv(A).
Vase help slash cuando A sea una matriz rectangular!
>> det(A) determinante (si A es una matriz cuadrada)
>> rank(A)
rango (nmero de pivotes = dimensin del espacio de filas y del
espacio de columnas)
>> size(A) es el par de nmeros [m n]
>> E=eig(X)
E es un vector que contiene los autovalores de la matriz cuadrada X
Ver help eig!


Creacin de grficos bidimensionales
Introduccin a MATLAB

4


Existen diversos comandos para realizar grficos bidimensionales en MATLAB (plot, stem, bar,
stair).

En particular nos interesa el comando PLOT ya que nos va a permitir graficar las respuestas y
excitaciones de sistemas continuos.

Dado que MATLAB no es un lenguaje simblico, las variables independientes y dependientes a
graficar deben ser definidas como vectores.

El comando PLOT presenta numerosas opciones para la presentacin y edicin de los grficos
(tipo de lnea, color, ttulo de ejes, ttulo de grfico, etc.). A continuacin se darn algunos
ejemplos prcticos de utilizacin de este comando. Se sugiere ampliar el contenido de este
apunte con la informacin proporcionada por la ayuda del programa.

>> x=[0:0.01:4*pi] %se define el vector x(var. independiente)
>> plot (x,sin(x)) %grfico de la funcin sen (x)

Otra opcin puede ser:

>> x=[0:0.01:4*pi] %se define el vector x
>> y= sin(x) %se define el vector y (variable dependiente)
>> plot (x,y)

Podemos hacer una nueva grfica:

>> z=[0:0.1:5]
>> plot(z,exp(-z))

Como vemos, el grfico en la ventana abierta se actualizasi queremos conservar el grfico
original y abrir una nueva ventana usamos el comando FIGURE:

>> figure
>> plot (x,cos(x)) %grfico de la funcin sen (x), recordar la
variable x ya haba sido definida en el Workspace del programa.

La presentacin de los grficos puede ser mejorada de dos maneras:

1- Mediante las opciones de los mens Edit e Insert, situados en la barra de
herramientas de la ventana del grfico.

2- Introduciendo los comandos de edicin, ttulos de ejes, ttulo de grficos, etc. mediante
el Workspace desde el programa.

>> figure
>> plot(z,exp(-z),'ro:')
>> xlabel ('x')
>> ylabel ('exp (-x)')
>> title ('Funcin exponencial')

En este caso graficamos la funcin exponencial en color rojo (r), con lnea punteada (:) y con
un circulo (o) en cada uno de los puntos de la grfica (ver el help del comando plot para otras
opciones de formato para graficar las curvas).

Introduccin a MATLAB

5

Para realizar grficos mltiples es una nica ventana se utiliza el comando SUBPLOT. La
sintaxis del comando es la siguiente:

>> subplot (m,n,p), plot (x,y)

mn es el orden del arreglo que se va a utilizar para posicionar los grficos y p denota la
posicin del grfico (el orden es contando fila por fila). La figura muestra un ejemplo para un
arreglo de mn=22:



Por lo tanto, si elegimos un arreglo de 21 (2 filas y 1 columna) y queremos graficar la funcin
exponencial en la parte superior y la funcin seno en la parte inferior, utilizamos:

>> figure
>> subplot (2,1,1), plot(z,exp(-z))
>> subplot (2,1,2), plot(x,sin(x))

Funcin transferencia

La funcin transferencia de un sistema se define como la relacin entre las transformadas de
Laplace de la variable de salida y la variable de entrada, cuando las condiciones iniciales del
sistema son nulas. El concepto de funcin transferencia es vlido para el anlisis sistemas
lineales e invariantes en el tiempo.

El comando de MATLAB empleado para la creacin de funciones transferencia se denomina
TF y su sintaxis es la siguiente:

sys= tf(num,den)
donde:

sys es el identificador que elegimos para nuestro sistema.

num es el vector de coeficientes que define al numerador de nuestra funcin transferencia.
Introduccin a MATLAB

6


den es el vector de coeficientes que define al denominador de nuestra funcin
transferencia.

Tomando como ejemplo el caso de un amortiguador masa y resorte, mostrado en la figura:





Transformando:



Consideremos que

m=1 [kg]
b= 4 [N.s/m]
k=68 [N/m]

Para crear esta funcin transferencia, escribimos en el Workspace de MATLAB:

>> num=[1]
>> den=[1 4 68]
>> sys= tf (num,den)

Se podra haber declarado primero las variables del problema y luego construido la funcin
transferencia:

>> m=1;
>> b=4;
>> k=68;
>> num=[1]
>> den= [m b k]
>> sys= tf(num,den)

Respuesta del sistema a excitaciones predefinidas

Respuesta al impulso

La excitacin impulsiva nos permite conocer la respuesta natural del sistema, tal como vemos a
continuacin:



Luego,

( ) |

\
|
+ = kx
dt
dx
b t f
dt
x d
m
2
2
( ) t f kx
dt
dx
b
dt
x d
m = + +
2
2
) ( ) ( ) ( ) (
2
s F s kX s bsX s X ms = + +
k bs ms s F
s X
s T
+ +
= =
2
1
) (
) (
) (
( ) ( ) ( )
( ) ( ) 1
*
=
=
s H s Y
t t h t y
Introduccin a MATLAB

7



El conocimiento de la respuesta natural del sistema, brinda una posibilidad para inferir la
localizacin de los polos (races del denominador) en el plano complejo.

El comando para obtener la respuesta impulsiva de un sistema se denomina IMPULSE y su
sintaxis es:

impulse (sys)

Si queremos examinar los polos de una funcin transferencia, una forma de calcularlos es
mediante el comando ROOTS. Este comando proporciona las races de un polinomio definido a
travs de su vector de coeficientes (tal como lo hemos trabajado hasta el momento).

>> m=1;
>> b=4;
>> k=68;
>> num=[1]
>> den= [m b k]
>> sys= tf(num,den) % no es necesario repetir estos comandos si la
informacin correspondiente qued cargada en el Workspace de MATLAB.
>> roots (den)
>> impulse (sys)

Como vemos, el sistema tiene 2 polos complejos conjugados (-2+8i ; -2-8i) ubicados en
el semiplano derecho del plano complejo. En este caso la respuesta al impulso del sistema es
una seal sub-amortiguada.

Se pueden explorar variantes, fijando los valores de m, b y k a fin de obtener polos reales en el
semiplano izquierdo, polos imaginarios y polos reales en el semiplano derecho (en este caso
con abstraccin del sistema fsico que representa la funcin transferencia). El procedimiento se
puede agilizar con el uso de un archivo *.m, tal como veremos ms adelante.

Respuesta al escaln unitario

La seal mayormente utilizada para la caracterizacin del sistema es el escaln unitario. Esta
excitacin tambin introduce en el sistema una perturbacin abrupta con la ventaja de que,
desde el punto de vista prctico, es ms fcil de generar que la seal impulso.

Esto hace que las caractersticas de desempeo en el dominio del tiempo de un sistema de
control (de cualquier orden) sean especificadas, generalmente, en trminos de su respuesta
transitoria a un escaln unitario.

El comando para obtener la respuesta impulsiva de un sistema se denomina STEP y su
sintaxis es:

step (sys)

Considerando el sistema masa-resorte-amortiguador, calculamos ahora su respuesta al
escaln:

>> m=1;
( ) ( ) t h t y =
Introduccin a MATLAB

8

>> b=4;
>> k=68;
>> num=[1]
>> den= [m b k]
>> sys= tf(num,den) %no es necesario repetir estos comandos si la
informacin correspondiente qued cargada en el Workspace de MATLAB.
>> step (sys)

Respuesta del sistema a excitaciones definidas por el usuario

Para obtener la respuesta temporal del sistema ante excitaciones definidas por el usuario, se
utiliza el comando LSIM.

lsim(sys,u,t)

Este comando grafica la respuesta del sistema a la seal de entrada descripta por u y t. El
vector t consiste en muestras temporales regularmente espaciadas y u es una matriz, con
tantas columnas como seales de entrada tenga el sistema y cuya i-sima fila especifica el
valor de la entrada en el tiempo t(i).

Por ejemplo:

>> t = [0:0.01:10];
>> u = sin(t);
>> lsim(sys,u,t)

Archivos *.m

Los archivos *.m se utilizan para crear secuencias de comandos (scripts) y segmentos de
programa que pueden ser ejecutados al invocarlos desde la ventana de comando.

Nota: Esto es as, siempre y cuando el path especificado en MATLAB (Current Directory)
indique el directorio en el cual se ha guardado el archivo *.m; por defecto se trabaja en:
C:\MATLAB6p1\work

Los archivos *.m tambin pueden ser utilizados para definir funciones.

La principal diferencia entre estas dos aplicaciones radica en que, en el primer caso, las
variables empleadas son globales (se definen en el Workspace); en tanto que para las
funciones, las variables son de tipo local, debiendo declararse una lista de argumentos de
entrada a la funcin y sus valores de retorno.

La creacin de un archivo *.m puede realizarse mediante cualquier editor dado que se trata
simplemente de un archivo de texto sin formato. MATLAB brinda la opcin de utilizar su propio
editor de texto, el cual se puede encontrar en:

FileNew Mfile

Se aconseja utilizar este editor para la creacin de los archivos *.m debido a que optimiza la
correccin de las secuencias de comando, brindando adems diversas opciones para
depuracin de programas (debug).

Introduccin a MATLAB

9

El comando run, permite correr las secuencias de comandos y los programas generados,
desde el mismo editor.

SCRIPTS

Tomando como ejemplo el sistema visto anteriormente, podemos realizar la siguiente
secuencia de comandos para evaluar distintos valores de los parmetros m, b y k.

%PARAMETROS DE ENTRADA
% m (masa)
% b (friccion viscosa)
% k (constante del resorte)
%
% OPCIONES DE GRAFICACION
% (1) respuesta al impulso
% (2) respuesta al escalon
% (3) se muestran ambos transitorios

clc
m= input ('m: ');
b= input ('b: ');
k= input ('k: ');

num=[1];
den= [m b k];
sys= tf(num,den)
roots (den)
v= input ('seleccione opcion: ');

if v==1
impulse (sys)
elseif v==2
step (sys)
elseif v==3
subplot (2,1,1), impulse (sys)
subplot (2,1,2), step (sys)
end

Nota: Si escribimos: help nombre del archivo *.m en el Command Window de MATLAB,
aparecern las lneas de comentario que figuran antes de la primera instruccin. Esto
proporciona una referencia rpida del script o funcin generada.
FUNCIONES

Ahora veamos un ejemplo de cmo se define una funcin en MATLAB mediante ficheros
{nombre _funcin}*.m. Para ello se propone la funcin tringulo, definida tal como se muestra a
continuacin:

Introduccin a MATLAB

10




function [y]=triangle (x)
%Funcion Triangulo
%
% Definicion:
% y= 2x 0 <= x <0.5
% y= 2-2x 0.5 <= x <=1

for i= 1:length(x)

if 0<=x(i) & x(i)<0.5

y(i)=2*x(i);

elseif 0.5<=x(i) & x(i)<=1

y(i)=2-2*x(i);

else

y(i)=0;

end
end

La funcin puede ser guardada con un nombre arbitrario (nombre_de_la_funcin.m) en el
directorio de trabajo que hayamos elegido. Con este nombre, se invoca a la funcin desde el
Command Window de MATLAB (en este caso se eligi el nombre triangle, coincidente con el
empleado en la definicin de la funcin).

Por supuesto, esta funcin puede ser utilizada como excitacin para nuestro sistema, como
vemos en el siguiente ejemplo:

>> t = [0:0.01:10];
>> u = triangle(t);
>> lsim(sys,u,t)


SIMULINK

Simulink es un paquete de software integrado a MATLAB que permite modelar, simular y
analizar sistemas dinmicos.

La simulacin de un sistema dinmico se realiza, primero, creando un modelo grfico del
sistema a ser simulado mediante el editor de Simulik y luego simulando su comportamiento un
rango de tiempo especificado.


<
=
x
x x
x x
y
de resto el para 0
1 0,5 2 2
0,5 0 2
Introduccin a MATLAB

11

Como ejemplo de aplicacin, veremos como modelar y simular el sistema masa-resorte-
amortiguador.

Para abrir el editor de Simulink tenemos dos opciones.

1- Desde MATLAB:

FileNewModel

2- Desde el Simulink library browser. El Simulink library browser se abre desde la barra
de herramientas de MATLAB haciendo clic en el smbolo:



Finalmente, podemos abrir el editor de Simulink mediante FileNewModel, o bien haciendo
clic en el smbolo:



En la librera Simulink del library browser, se encuentran los bloques que utilizaremos para
construir y analizar nuestro modelo. En particular estos bloques se hallan en los mens:
Continuous, Sinks y Sources.

El primer modelo que haremos nos permitir evaluar la respuesta de nuestro sistema ante una
excitacin del tipo escaln unitario, para ello arrastramos y soltamos los componentes de la
librera que se muestran en la tabla y los vinculamos entre s mediante conectores.

Bloque Men
Transfer Fcn Continuous
Step Sources
Scope Sinks

Haciendo doble-clic sobre los bloques podemos editar los parmetros de cada uno de ellos. En
el caso de la excitacin, la definicin por defecto es apropiada, en tanto que para el caso de la
funcin transferencia; Simulink pide que se introduzcan los vectores de coeficientes del
numerador y denominador (anlogamente a lo visto para la definicin de una funcin
transferencia desde el Command Window).



La representacin grfica del modelo es la siguiente:

El modelo se simula ejecutando el comando Start del men Simulation:

Simulation Start

Introduccin a MATLAB

12

O bien, haciendo clic sobre el smbolo:


La respuesta del sistema dinmico se observa haciendo doble clic en el bloque Scope.



Los parmetros de simulacin pueden ser configurados mediante la opcin Simulation
parameters del men Simulation:

Simulation Simulation parameters


Como puede observarse, en esta ventana se especifican el tiempo de simulacin, mtodo
numrico empleado y opciones de salida.

Interaccin con el Workspace

Una de las capacidades ms interesantes de Simulink es la posibilidad de interactuar con el
Workspace de MATLAB. Esto permite utilizar variables definidas en el Workspace como
excitaciones y escribir en el mismo los resultados de las simulaciones.

Introduccin a MATLAB

13

Una forma de realizar esto es configurando el tab Workspace I/O de la opcin Simulation
parameters:


En esta ventana se especifican las variables que se cargan desde el Workspace y las variables
que sern guardadas en el Workspace como resultado de la simulacin.

Supongamos que deseamos evaluar la respuesta de nuestro sistema ante la excitacin
triangle definida previamente. Para esto es necesario ejecutar en el Command Window de
MATLAB.

>> tin=[0:0.01:10]'
>> uin=[triangle(t)]'

Esto genera dos vectores columna; uno con las muestras temporales y el otro con los valores
correspondientes de la excitacin.

Nota: Las variables que pasamos a Simulink desde el Workspace de MATLAB, deben estar
definidas como vectores columna.

Simulink guardar en el Workspace los vectores tout y yout correspondientes a la respuesta
dinmica del sistema. La salida ser guardada en este caso como un arreglo (vector); existen
otras opciones de formato de los valores de salida: structure y structure with time.

Para que nuestro modelo tome valores desde el Workspace y los guarde all, una vez que la
ventana Workspace I/O fue configurada, debemos agregarle al mismo los puertos de entrada
(In1) y salida (Out1). Estos se hallan en los mens Sources y Sinks, respectivamente:

Introduccin a MATLAB

14

Al simular el modelo, aparecen automticamente en el listado de variables del Workspace
tout y yout.

Otra manera de lograr la interaccin entre Simulink y las variables definidas en MATLAB es
mediante los bloques From Workspace y To Workspace. La utilizacin de estos bloques
permite prescindir de la configuracin del tab Workspace I/O.

Un ejemplo de aplicacin de estos bloques se muestra a continuacin:


Haciendo doble clic sobre el bloque From Workspace entramos a su ventana de
configuracin:



En este caso, entrada se define como un vector de n2; la primera columna corresponde al
vector tiempo (n es la cantidad de muestras temporales que tomamos) y la segunda columna
corresponde a la excitacin (u(t)).

La definicin de entrada fue efectuada en el Command Window de MATLAB de la siguiente
forma:

>> tin=[0:0.01:10]';
>> uin=[triangle(t)]';
>> entrada= [tin uin];

Introduccin a MATLAB

15

Para el bloque To Workspace, la ventana de configuracin es:



En ella, especificamos el nombre y tipo de variable que deseamos que sea escrita en el
Workspace de MATLAB conteniendo los resultados de la simulacin.

Comentario sobre el Symbolic toolbox

El Simbolic toolbox de MATLAB, permite realizar operaciones en lenguaje simblico.

Escribiendo: help symbolic en el command window de MATLAB, la ayuda nos mostrar
todas las posibilidades de clculo que pueden ser realizadas mediante este paquete.

En esta introduccin se mostrar simplemente como se calculan transformadas de Laplace y
sus inversas. Se utiliza, a modo de ejemplo, ejercicios de la gua prctica nmero 1.

Clculo de la transformada de Laplace de una funcin:

>> syms ('t')
>> f=2*exp(-t)*cos(10*t)-t^4+6*exp(10-t);
>> F=laplace(f)

Clculo de la transformada inversa de Laplace:

>> syms ('s')
>> F=(2*exp(-0.5*s))/(s^2+-6*s+13)-(s-1)/(s^2+-2*s+2)
>> f=ilaplace(F)






Referencias

Introduccin a MATLAB

16

[1] Tutorial de MATLAB (MATLAB Help)
[2] Aprenda MATLAB 6.1 como si estuviera en primero. Javier Garca de Jaln Jos Ignacio Rodrguez,
Alfonso Brazales. Escuela Tcnica Superior de Ingenieros Industriales. Universidad Politcnica de
Madrid
[3] Modelado, simulacin y control de sistemas dinmicos. Parte I: Tutorial bsico de MATLAB. P.F.
Puleston, F. Valenciaga. Departamento de electrotecnia. Facultad de Ingeniera Universidad Nacional de
La Plata.

También podría gustarte