Вы находитесь на странице: 1из 17

c  


   
Autor: Ing. Gabriel Lorenzo

i 
 
ATLAB es el nombre abreviado de ³ATrix LABoratory´. ATLAB es un programa
para realizar cálculos numéricos con  y 
 pudiéndose también trabajar con
números escalares (tanto reales como complejos), con cadenas de caracteres y con otras
estructuras de información. Además, ATLAB cuenta con un lenguaje de programación
propio.
Desde el punto de vista de control, ATLAB se puede considerar un entorno matemático
de simulación 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 característica de ATLAB es que cuenta con numerosos paquetes adicionales
llamados ³toolboxes´. En el caso que nos ocupa se utilizará el ÷   
  ,
pero es importante tener en cuenta que existen diversos toolboxes; cada uno de ellos
destinado a una aplicación específica (control, estadística, procesamiento de señales,
manejo de lenguaje simbólico, etc.).
La presente introducción se plantea como una guía práctica a fin de permitir la
familiarización con los comandos de ATLAB que serán frecuentemente utilizados a lo
largo esta materia.

     
   
Existen numerosas referencias bibliográficas (además del tutorial del programa) en donde
se explica en detalle el entorno operativo de ATLAB (algunas de ellas figuran en el
listado de referencias de este apunte). El objetivo de esta sección es presentar cada uno de
los componentes del entorno ATLAB y proporcionar una breve descripción de los
mismos:

   es la ventana principal del programa en donde se ejecutan los
comandos e instrucciones lógicas.

 Es el espacio de trabajo en donde se almacenan todas las variables definidas a
través del ³Command Window´. Éste puede ser guardado en un archivo binario (*.mat) y
cargado nuevamente, en otra ejecución del programa.

  Almacena el listado de comandos ejecutados desde el ³Command
Window´ de ATLAB. El historial se guarda automáticamente, quedando registradas cada
una de las sesiones con fecha y hora. Una opción interesante, es seleccionar los comandos
relevantes del ³Command History´ y generar con ellos un archivo *.m (secuencias de
comandos, también denominadas scripts).
   especifica el directorio de trabajo de ATLAB


  
 
Todos los comandos que figuran a continuación se ejecutan desde el ³Command Window´
de ATLAB:
‰ proporciona ayuda sobre un determinado ítem (toolbox, comando, etc.).
Ejemplo:
üü   
 

 
      
    
üü     

 
      
 borra la pantalla del ³Command Window´

 limpia las variables del ³Workspace´. También se pueden borrar individualmente
escribiendo:
>> clear nombre_de_la_variable
‰ proporciona un listado de las variables definidas en el ³Workspace´. Podemos
preguntar también por variables individuales:
>> whos nombre_de_la_variable
  permite abrir los archivos que se encuentran en el ³Current Directory´ de ATLAB
especificado, por ejemplo:
>> open nombre_del_archivo.m


!  

" #

üü  !"!#$

üü  " #$

Nota: se puede ocultar el resultado de la operación 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.

" 

üü  %"%#$
o bien,
üü &
Nota: El símbolo ('), transpone el vector A para generar el vector columna B. Este comando
también puede ser utilizado para generar la transpuesta de una matriz dada.

"  

   #
üü '(')$   *  + + 
* + +

üü '( (')$   *  + + 
*    +
,
üü )'()'('$   *  
   )!'
üü  - .'! !'), -  ') +     /  ')0'  ')0 ! +
 

      - 1
( ') ')0'' ')0' ')0'2 ')0'" ')0'# ')0'3 ')0'4
')0'5 ')0'6 ')0 $

"     
üü 7 .'!'), -  + *  
   
üü  .'!'), -  + *  
  + 

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


!  


atriz estándar
üü '! !2%"!#!3$


 


$ 
%   
&
matriz diagonal con el vector apcomo diagonal
üü 
-.*,

matriz de pƒ pcon todos los valores iguales a uno
üü  .,

üü ., matriz identidad de pƒ 
matriz de pƒ pcon elementos de valor aleatorio entre 0 y 1
üü  .,
(distribución uniforme)
matriz de pƒ pcuyos elementos siguen una distribución
üü  .,
normal (media 0 y varianza 1)

'
   

$ 
% '

üü 89 matriz resultante del producto @ (si dicha operación es posible)
producto elemento por elemento (si „ @  „  , es
üü 89
decir, si tienen el mismo tamaño)
üü
*., @, si @ es cuadrada e invertible
üü 
*., pseudoinversa de @.
a@  , si existe a@: la barra inversa es la división
üü 8:
por la izquierda
solución de: @   si existe a@.
üü  :
¡Véase help slash cuando @ sea una matriz rectangular!

üü ., determinante (si @ es una matriz cuadrada)


rango (número de pivotes = dimensión del espacio de filas y del
üü ;.,
espacio de columnas)

üü 
7., es el par de números [ ´

Ñ es un vector que contiene los



 de la matriz
üü <
-.=,
cuadrada  ¡Ver help eig!


  ()# * 

Existen diversos comandos para realizar gráficos bidimensionales en ATLAB (plot,
stem, bar, stair).
En particular nos interesa el comando +' ya que nos va a permitir graficar las
respuestas y excitaciones de sistemas continuos.
Dado que ATLAB no es un lenguaje simbólico, las variables independientes y
dependientes a graficar deben ser definidas como vectores.
El comando +' presenta numerosas opciones para la presentación y edición de los
gráficos (tipo de línea, color, título de ejes, título de gráfico, etc.). A continuación se darán
algunos ejemplos prácticos de utilización de este comando. Se sugiere ampliar el contenido
de este apunte con la información proporcionada por la ayuda del programa.

üü )())'("9
$  
  *  .* 

,
üü   .!
.,, - >
  +
  .,

Otra opción hubiese sido:

üü )())'("9
$  
  *  
üü  
.,  
  *   .*
 
,
üü   .!,

Podemos hacer una nueva gráfica:

üü 7)()'(#$
üü  .7!.?7,,

Como vemos, el gráfico en la ventana abierta se actualiza«si queremos conservar el


gráfico original y abrir una nueva ventana usamos el comando Mi,-.:

üü 
-+ 
üü   .! .,, - >
  +
  .,!    *
   1 



   @ ;    - 

La presentación de los gráficos puede ser mejorada de dos maneras:


1- ediante las opciones de los menús ³Edit´ e ³Insert´, situados en la barra de
herramientas de la ventana del gráfico.
2- Introduciendo los comandos de edición, títulos de ejes, título de gráficos, etc.
mediante el Workspace desde el programa.
üü 
-+ 
üü  .7!.?7,!& (&,
üü  .&&,
üü  .& .?,&,
üü 
 .&A+
  
&,

En este caso graficamos la función exponencial en color rojo (r), con línea punteada (:) y
con un circulo (o) en cada uno de los puntos de la gráfica (ver el help del comando plot
para otras opciones de formato para graficar las curvas).
Para realizar gráficos múltiples es una única ventana se utiliza el comando $-+' . La
sintaxis del comando es la siguiente:

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

m×n es el orden del arreglo que se va a utilizar para posicionar los gráficos y p denota la
posición del gráfico (el orden es contando fila por fila). La figura muestra un ejemplo para
un arreglo de m×n=2×2:

Por lo tanto, si elegimos un arreglo de 2×1 (2 filas y 1 columna) y queremos graficar la


función exponencial en la parte superior y la función seno en la parte inferior, utilizamos:
üü 
-+ 
üü +  . !'!',!  .7!.?7,,
üü +  . !'! ,!  .!
.,,

M  
# 

La función transferencia de un sistema se define como la relación 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 función transferencia es válido para el análisis
sistemas lineales e invariantes en el tiempo.
El comando de ATLAB empleado para la creación 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   #  que define al numerador de nuestra función
transferencia.
³den´ es el   #  que define al denominador de nuestra función
transferencia.

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

2 ¨  ¸
 2
!    ©   [ ¹
 ª  º
2 
 2
   [ !  
 
Transformando:
„ 2  ( „ )  „ ( „ )  [ ( „ ) ! ( „)
 ( „) 1
 ( „) ! ! 2
( „ ) „  „  [
Consideremos que
m=1 [kg´
b= 4 [N.s/m´
k=68 [N/m´
Para crear esta función transferencia, escribimos en el Workspace de ATLAB:

üü +'$
üü ' " 35$
üü   .+!,
Se podría haber declarado primero las variables del problema y luego construido la función
transferencia:

üü '%
üü "%
üü ;35%
üü +'$
üü    ;$
üü  .+!,
.
 

%
  # 


.

 
La excitación impulsiva nos permite conocer la respuesta natural del sistema, tal como
vemos a continuación:

    * · 
 „  „ ™ 1
Luego,
    
El conocimiento de la respuesta natural del sistema, brinda una posibilidad para inferir la
localización de los polos (raíces del denominador) en el plano complejo.
El comando para obtener la respuesta impulsiva de un sistema se denomina i +-$ y
su sintaxis es:

impulse (sys)

Si queremos examinar los polos de una función transferencia, una forma de calcularlos es
mediante el comando .'' $. Este comando proporciona las raíces de un polinomio
definido a través de su vector de coeficientes (tal como lo hemos trabajado hasta el
momento).

üü '%
üü "%
üü ;35%
üü +'$
üü    ;$
üü  .+!,    

    

 

 
 B+  -   @ ;   
üü  .,
üü
+ .,

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 señal 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 abstracción del sistema físico que representa la función transferencia). El
procedimiento se puede agilizar con el uso de un archivo *.m, tal como veremos más
adelante.

.

 
  

La señal mayormente utilizada para la caracterización del sistema es el escalón unitario.
Esta excitación también introduce en el sistema una perturbación abrupta con la ventaja de
que, desde el punto de vista práctico, es más fácil de generar que la señal impulso.
Esto hace que las características de desempeño en el dominio del tiempo de un sistema de
control (de cualquier orden) sean especificadas, generalmente, en términos de su respuesta
transitoria a un escalón unitario.
El comando para obtener la respuesta impulsiva de un sistema se denomina $ + y su
sintaxis es:

step (sys)

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


escalón:

üü '%
üü "%
üü ;35%
üü +'$
üü    ;$
üü  .+!,    

    

 

 
 B+  -   @ ;   
üü  .,

.
 

%
  # 
   

Para obtener la respuesta temporal del sistema ante excitaciones definidas por el usuario, se
utiliza el comando $i /

lsim(sys,u,t)

Este comando grafica la respuesta del sistema a la señal 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 señales de entrada tenga el sistema y cuya i-ésima fila especifica
el valor de la entrada en el tiempo t(i).
Por ejemplo:

üü   )())'(')$%
üü +  
.,%
üü 
.!+!,

‰ 0/

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 ATLAB (³Current
Directory´) indique el directorio en el cual se ha guardado el archivo *.m; por defecto se
trabaja en: C:\ATLAB6p1\work
Los archivos *.m también 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


„, las variables son de tipo local, debiendo declararse una lista de argumentos de
entrada a la función y sus valores de retorno.
La creación de un archivo *.m puede realizarse mediante cualquier editor dado que se trata
simplemente de un archivo de texto sin formato. ATLAB brinda la opción de utilizar su
propio editor de texto, el cual se puede encontrar en:

FilezNewz file

Se aconseja utilizar este editor para la creación de los archivos *.m debido a que optimiza
la corrección de las secuencias de comando, brindando además diversas opciones para
depuración de programas (debug).
El comando ³run´, permite correr las secuencias de comandos y los programas generados,
desde el mismo editor.

$.i+ $
Tomando como ejemplo el sistema visto anteriormente, podemos realizar la siguiente
 
 
 para evaluar distintos valores de los parámetros m, b y k.

C<C D< <ECD


 .,
 .

 *
 ,
; .    ,

8FE< D< GCAF88FE
.', + 
+
. , +    
.2,  +     





+ .&( &,%

+ .&( &,%
;
+ .&;( &,%

+'$%
   ;$%
 .+!,
 .,
*
+ .&
 
( &,%

 *'

+ .,

 *
 .,

 *2
+  . !'!',!
+ .,
+  . !'! ,!  .,


Nota: Si escribimos: help ³nombre del archivo *.m´ en el ³Command Window´ de


ATLAB, aparecerán las líneas de comentario que figuran antes de la primera instrucción.
Esto proporciona una referencia rápida del script o función generada.

M-1i'1$
Ahora veamos un ejemplo de como se define una #  en ATLAB mediante ficheros
*.m. Para ello se propone la función triángulo, definida tal como se muestra a continuación:

2 0   0,5
¿
  2  2 0,5   1
¿0 para el resto de

+ 
 $
- .,
A+
 
-+

D


(
  ) H  H)#
 ?  )# H  H'


 '(-.,

 )H.
, I .
,H)#

.
, 9.
,%


 )#H.
, I .
,H'

.
, ? 9.
,%



.
,)%



La función puede ser guardada con un nombre arbitrario (nombre_de_la_función.m) en el
directorio de trabajo que hayamos elegido. Con este nombre, se invoca a la función desde
el Command Window de ATLAB (en este caso se eligió el nombre ³triangle´,
coincidente con el empleado en la definición de la función).
Por supuesto, esta función puede ser utilizada como excitación para nuestro sistema, como
vemos en el siguiente ejemplo:
üü   )())'(')$%
üü +  
-.,%
üü 
.!+!,

$i -i12
Simulink es un paquete de software integrado a ATLAB que permite modelar, simular y
analizar sistemas dinámicos.
La simulación de un sistema dinámico se realiza, primero, creando un modelo gráfico del
sistema a ser simulado mediante el editor de Simulik y luego simulando su comportamiento
un rango de tiempo especificado.
Como ejemplo de aplicación, veremos como modelar y simular el sistema masa-resorte-
amortiguador.
Para abrir el editor de Simulink tenemos dos opciones.

1- Desde ATLAB: FilezNewzodel

2- Desde el ³Simulink library browser´. El ³Simulink library browser´ se abre desde la


barra de herramientas de ATLAB haciendo clic en el símbolo:

Finalmente, podemos abrir el editor de Simulink mediante FilezNewzodel, o bien


haciendo clic en el símbolo:

En la librería ³$ ´ del library browser, se encuentran los bloques que utilizaremos
para construir y analizar nuestro modelo. En particular estos bloques se hallan en los
menús: ³Continuous´, ³Sinks´ y ³Sources´.
El primer modelo que haremos nos permitirá evaluar la respuesta de nuestro sistema ante
una excitación del tipo escalón unitario, para ello arrastramos y soltamos los componentes
de la librería que se muestran en la tabla y los vinculamos entre sí mediante conectores.
3 
Transfer Fcn Continuous
Step Sources
Scope Sinks
Haciendo doble-clic sobre los bloques podemos editar los parámetros de cada uno de ellos.
En el caso de la excitación, la definición por defecto es apropiada, en tanto que para el caso
de la función transferencia; Simulink pide que se introduzcan los vectores de coeficientes
del numerador y denominador (análogamente a lo visto para la definición de una función
transferencia desde el Command Window).
La representación gráfica del modelo es la siguiente:

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


$
 z$

O bien, haciendo clic sobre el símbolo:

La respuesta del sistema dinámico se observa haciendo doble clic en el bloque Scope.

Los parámetros de simulación pueden ser configurados mediante la opción ³Simulation


parameters«´ del menú ³Simulation´:
$
 z $
 

4
Como puede observarse, en esta ventana se especifican el tiempo de simulación, método
numérico empleado y opciones de salida.

i 
   

Una de las capacidades más interesantes de Simulink es la posibilidad de interactuar con el
Workspace de ATLAB. Esto permite utilizar variables definidas en el Workspace como
excitaciones y escribir en el mismo los resultados de las simulaciones.
Una forma de realizar esto es configurando el tab ³Workspace I/O´ de la opción
³Simulation parameters«´:

En esta ventana se especifican las variables que se cargan desde el Workspace y las
variables que serán guardadas en el Workspace como resultado de la simulación.
Supongamos que deseamos evaluar la respuesta de nuestro sistema ante la excitación
³triangle´ definida previamente. Para esto es necesario ejecutar en el ³Command Window´
de ATLAB.

üü 
)())'(')$&
üü +

-.,$&

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

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

Simulink guardará en el Workspace los vectores ³tout´ y ³yout´ correspondientes a la


respuesta dinámica 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 menús ³Sources´ y ³Sinks´,
respectivamente:

Al simular el modelo, aparecen automáticamente en el listado de variables del Workspace


³tout´ y ³yout´.
Otra manera de lograr la interacción entre Simulink y las variables definidas en ATLAB
es mediante los bloques ³From Workspace´ y ³To Workspace´. La utilización de estos
bloques ½ p½„
  de la configuración del tab ³Workspace I/O´.
Un ejemplo de aplicación de estos bloques se muestra a continuación:
Haciendo doble clic sobre el bloque ³From Workspace´ entramos a su ventana de
configuración:

En este caso, ³entrada´ se define como un vector de na2; la primera columna corresponde
al vector tiempo (n es la cantidad de muestras temporales que tomamos) y la segunda
columna corresponde a la excitación (u(t)).
La definición de ³entrada´ fue efectuada en el Command Window de ATLAB de la
siguiente forma:
üü 
)())'(')$&%
üü +

-.,$&%
üü   
 +
$%
Para el bloque ³To Workspace´, la ventana de configuración es:
En ella, especificamos el nombre y tipo de variable que deseamos que sea escrita en el
Workspace de ATLAB conteniendo los resultados de la simulación.

 
 *  $* *%

El ³Simbolic toolbox´ de ATLAB, permite realizar operaciones en lenguaje simbólico.


Escribiendo: ³help symbolic´ en el ³command window´ de ATLAB, la ayuda nos
mostrará todas las posibilidades de cálculo que pueden ser realizadas mediante este
paquete.
En esta introducción se mostrará simplemente como se calculan transformadas de Laplace
y sus inversas. Se utiliza, a modo de ejemplo, ejercicios de la guía práctica número 1.
Cálculo de la transformada de Laplace de una función:
üü  .&&,
üü  9.?,9 .')9,?0"J39.')?,%
üü A .,

Cálculo de la transformada inversa de Laplace:


üü  .&&,
üü A. 9.?)#9,,K.0 J?39J'2,?.?',K.0 J? 9J ,
üü 
 .A,
.# 


[1´ Tutorial de ATLAB (ATLAB Help)


[2´ ³Aprenda ATLAB 6.1 como si estuviera en primero´. 2  p    p p 2 
p 2 „p

p  p
„ p  „. Escuela Técnica Superior de Ingenieros Industriales.
Universidad Politécnica de adrid
[3´ odelado, simulación y control de sistemas dinámicos. Parte I: Tutorial básico de

ATLAB.  p  „
p p  
 . Departamento de electrotecnia. Facultad de
Ingeniería Universidad Nacional de La Plata.