Anda di halaman 1dari 6

PRCTICA 6 DE FUNDAMENTOS DE AUTOMTICA (22 DE NOVIEMBRE DE 2011)

INTRODUCCIN AL PROGRAMA MATLAB


INTRODUCCIN Y OBJETIVOS Esta prctica tiene como objetivo la familiarizacin del alumno con el MATLAB, que es un entorno de trabajo matemtico y de simulacin usado para modelar y analizar sistemas dinmicos. Maneja sistemas continuos y discretos, lineales y no lineales. MATLAB es un sistema abierto para el que hay disponibles distintos mdulos especializados: Control Systems, Signal Processing, System Identification, Optimization, Robust Control, Neuronal Networks, Simulink,... La forma de trabajar con Matlab es a travs de un conjunto de comandos (a los que generalmente se les pasan variables y eventualmente devuelven otras variables como resultado). Por lo tanto, es esencial conocer la sintaxis de los comandos, la estructura de las variables y el conjunto de comandos existentes. ESTRUCTURA GENERAL DE LOS COMANDOS MATLAB MATLAB es un lenguaje de expresiones. Las expresiones son introducidas por el usuario e interpretadas y evaluadas por el sistema MATLAB. La sintaxis general de los comandos de MATLAB es de la forma: [salida1, salida2,] = nombre_comando(entrada1,entrada2,) donde las variables de salida aparecen entre corchetes y las de entrada entre parntesis. Si hay una sola salida, los corchetes son opcionales. La evaluacin de las expresiones produce siempre una matriz. Por lo tanto, MATLAB trabaja con matrices. Los detalles previos ms importantes a la hora de trabajar con Matlab son los siguientes: En la ventana de comandos cada instruccin ocupa una lnea. Para que una instruccin contine en la lnea siguiente, se pondrn tres puntos al final de la incompleta. Si se pretende que en una lnea haya ms de una instruccin stas se separarn mediante coma o punto y coma. Si al final de cada instruccin se coloca un punto y coma no se muestra el resultado. Para introducir comentarios se situar el smbolo % (lo que viene a continuacin en la misma lnea, no se procesa). Las flechas del teclado permiten repetir las instrucciones anteriores. El Matlab utiliza cdigo C. Por lo tanto, distingue maysculas de minsculas.

ESTRUCTURA DE DATOS EN MATLAB El elemento bsico de Matlab es una matriz compleja de doble precisin. Esta representacin es bastante general e incluye vectores, reales y complejos, y escalares. Incluye tambin indirectamente polinomios y funciones de transferencia. Los vectores fila se introducen usando corchetes y los elementos se separan usando espacios en blanco o comas. Para crear un vector columna se puede usar la transposicin (aadiendo al vector una comilla). >> x =[1,2, 3] , y=[1+j 2+pi*i -sqrt(-1) ] x = 1 2 3 y = 1.0000+1.0000i 2.0000+3.1416i 0-1.0000i

Las matrices se introducen lnea a lnea, separadas por punto y coma (o tambin con el retorno de carro). >> A = [1 A = [ 1 4 7 2 2 5 8 3; 3 6 9] 4 5 6; 7 8 9]

OPERACIONES Y FUNCIONES Operaciones algebraicas bsicas: +, -, *, /, \, ^, sqrt Operaciones trigonomtricas bsicas: sin, cos, tan, .... Operaciones logartmicas bsicas: exp, log, log10, log2, .... Operaciones sobre matrices: A\B B/A % inv(A)*B...devuelve x como resultado de Ax=B % B*inv(A)...devuelve x como resultado de xA=B

Operaciones sobre arrays (matrices elemento a elemento) +, -, .*, ./, .\, . ^ ej: C = A.*B multiplica elemento a elemento 2 matrices c 11 =a 11 *b 11 c 12 =a 12 *b 12 COMANDOS GENERALES. AYUDA >> cd >> cd \subdir >> dir >> who >> whos >> clear >> save n >> load n >> help >> help n >> clf >> demo >> quit % Muestra el directorio de trabajo % Cambia el directorio de trabajo % Lista el contenido del directorio de trabajo % Lista todas las variables del espacio de trabajo % Igual que el anterior, pero proporciona ms informacin % Borra el espacio de trabajo % Guarda el espacio de trabajo en un fichero de nombre n.mat % Carga el espacio de trabajo almacenado en el fichero n.mat % Llama a la ayuda de Matlab. % Proporciona ayuda del comando n % Borra la pantalla grfica % Lista de demostraciones % Salir de Matlab (se puede hacer con las opciones del men)

REVISIN DE COMANDOS FRECUENTEMENTE USADOS Ejercicio 1: Repetir los comandos que se listan a continuacin y observar los resultados. Se proporcionan de forma escueta para que se haga uso del comando help cuando sea necesario. *Trabajo con matrices: >> A = [1 >> A = [1 0 7 2 2 5 8 3; 3 6 9] 0 5 6; 7 8 9] % Otra forma:

>> D = A(:,2) >> D = A(1:3,1:3) >> B = A >> C = A*B >> det(A) >> rank(A) >> inv(A) >> p = poly(A)

% Resultado: vector con todas las filas de la 2 columna % Resultado: submatriz con filas 1 a 3 y columnas 1 a 3 % Traspuesta % Producto matricial (ojo con los rangos) % Determinante % Rango % Inversa % Polinomio caracterstico

Si a una matriz le aadimos un nmero de una direccin no existente, la matriz crecer hasta encajar el nuevo elemento y llenar con ceros los espacios no especificados. >> a =[1 2;3 3]

>> a(3,3) = 1 >> a Matrices especiales: >> eye(3) >> eye(3,2) >> ones(3) >> zeros(3) >> diag([1 2 3 4]) % Identidad 3x3 % Identidad 3x2 % Matriz de 1. tamao 3x3 % Matriz de 0, tamao 3x3 % Matriz diagonal de tamao 4x4 % Comprobar el nuevo valor de a

*Trabajo con vectores % Polinomio P = 1X2 + 8X % races del polinomio 4] % Polinomio Q = X2 + 4 % races del polinomio % producto de polinomios % races del polinomio S % Polinomio = residue(R,S) X + 2

>> P = [1

15]

+ 15

>> roots(P) >> Q = [1 0

>> roots(Q) >> S = conv(P,Q) >> roots(S) >> R = [1 2] >> [a b c]

% Descomposicin en fracciones simples del % cociente de R entre S

% a: numeradores % b: denominadores (races de S) % c: cociente de los polinomios R y S (si existe) >> c = [1 >> d = [4 >> d = d >> c*d >> d*c >> x = 1:5 % Vector de 5 elementos: de 1 a 5 con incrementos de 1 %Vector de 11 elementos: de 0 a 5 con incrementos de 0.5 %Vector de 6 elementos: de 5 a 0 con decrementos de 1 2 5 3] 6]

>> x = 0:0.5:5 >> x = 5:-1:0

* Trabajo elemento a elemento >> x = 1:3 >> y = x >> z = x.*y * Control de flujo del programa (for, while, if): >> x=[1 1 1 >> for i = 2:3, >> x 1 1 1 x(i)=0, end 1]

>> x =[1 2 3 4 >> i = 1 >> while x(i) < 4, % De otra forma >> i = 1 >> x =[1 2 3 4 >> while x(i)<4 x(i)=0; i=i+1; end; x >> x = [-1 >> for i = 1:4, 2 -3

7] i=i+1; end; x

x(i)=0;

7]

4] else x(i)=1, end, end;x

if x(i) < 0 x(i)=0,

otra forma de hacer lo mismo: >> for i=1:4, if x(i) < 0 x(i)=0 else x(i)=1 end end; >>x Trabajo con grficas:

>> >> >> >> >> >>

x =[0. .48 .84 1 .91 .6 .14] plot(x) % Grfica en 2D title(Mi grafico) xlabel(Eje x) ylabel(Eje y) grid 4 3 5 6 7 7.8 12.3 8] 10.4

>> x = [1 2 3 >> y = [5.3 6.2 >> plot(x,y) >> >> >> >> >> >> >>

7.8

10]

x = -8: .5: 8; y = x; X = ones(size(y))*x; Y = y*ones(size(x)); R = sqrt(X .^2 + Y .^2); Z = sin(R)./R; mesh(Z)

% Permitido: X=ones(y)*x; % Permitido: Y=y*ones(x);

% Grfico en tres dimensiones.

FUNCIONES Y ALMACENAMIENTO EN DISCO MATLAB permite la generacin y el almacenamiento en disco de dos tipos de ficheros (mediante las opciones correspondientes del men): Funcin: Fichero con un conjunto de instrucciones que se ejecutarn tras su llamada y a la que se le pueden pasar parmetros y puede devolver valores. La ventaja que representan se basa en el ahorro de tiempo al poder tenerla preprogramadas, evitando escribir todas las instrucciones cada vez. El formato debe ser el siguiente: Nombre del fichero: nombre.m Instruccin: function [sal1,sal2,...] = nombre(ent1,ent2,...) Script: (Programa) Fichero con el conjunto de instrucciones que queremos que se realicen tras la llamada. Tras sta, las instrucciones del programa se ejecutarn secuencialmente de la misma forma que si se hubiesen introducido una a una en la ventana de comandos. Las principales diferencias entre los scripts y las funciones son: Las funciones permiten pasar parmetros por valor, usan variables locales y no operan globalmente sobre el espacio de trabajo-. En una funcin, la primera lnea del programa debe contener la palabra especial function. Ejercicio 2. Mediante las opciones del men de Matlab File New/M-file crear dos ficheros, uno correspondiente a una funcin (fact.m) y el otro a un programa (progr.m) que la utiliza. Tras crearlos se ejecutar la instruccin progr en la ventana de comandos de MATLAB.

fact.m function result = fact(numero) % Devuelve en result el factorial de numero result=1; siguiente=numero; for i=1:numero result=result*siguiente; siguiente=siguiente-1; end; progr.m % Calcula las combinaciones de N elementos tomados de m en m N = input(Nmero de elementos:); m = input(Tamao de los grupos:); combinaciones = fact(N)/(fact(N-m)*fact(m))

ANLISIS DE SISTEMAS DE CONTROL CON MATLAB

MATLAB dispone de una coleccin de algoritmos, la mayora en ficheros .m, que permiten desarrollar tcnicas comunes de diseo, anlisis y modelado de sistemas de control. En nuestro curso utilizaremos modelos de sistemas lineales invariantes en el tiempo (LTI). La representacin se puede realizar tanto en variables de estado como en representacin entrada/salida (las instrucciones ss2tf y tf2ss permiten conmutar entre un formato y el otro). Las funciones de transferencia pueden definirse a partir de los polinomios del numerador y denominador o por medio de la variable s de Laplace: >> >> >> >> num1=[2 5]; den1=[1 4 8]; G1=tf(num1,den1) num2=[10];

% Define la f. de transf.

(2*s + 5)/(s^2 + 4*s + 8)

>> den2=[1 4]; >> G2=tf(num2,den2)

% Define la f. de transf.

10/(s + 4)

Las funciones de transferencia tambin se pueden definir utilizando la variable s, tal como se muestra a continuacin: >>s = tf('s') % Define la funcin de transferencia s (Laplace variable).

Ahora se pueden especificar funciones de transferencia directamente con la variable s: >>G1 = (2*s + 5)/(s^2 + 4*s + 8) >>G2 = 10 / ((s^2 + 3*s + 1) * (s + 5)) >>Gs = G1 * G2 >>Gp = G1 + G2 % Gs = f. de transferencia de G1 y G2 en serie. % Gp = f. de transferencia de G1 y G2 en paralelo. G2.

>>Gr = feedback(G1,G2) % F. de Transf. de G1 realimentado negativamente por >>Gc = feedback(G1,1) % F. de Transf. de G1 con realimentacin unitaria.

Las funciones de transferencia resultantes en cada caso son:

G s ( s ) G1 ( s ) G 2 ( s )
Gr ( s) G1 ( s) 1 G1 ( s) G2 ( s)

G p ( s ) G1 ( s ) G 2 ( s )
Gc ( s ) G1 ( s ) 1 G1 ( s )

Otras instrucciones tiles para trabajar con funciones de transferencia son: %Representa grficamente la respuesta del sistema con entrada escaln >>step(G1); >>pole(Gr) % Calcula los polos de la funcin de transferencia Gr >>zero(Gr) % Calcula los ceros de la funcin de transferencia Gr >>zpk(Gr) % Representacin de Gr con polos, ceros y ganancia >>[num,den]= tfdata(Gr,'v') % num = polinomio del numerador de Gr % den = polinomio del denominador de Gr Se puede comparar la respuesta de varios sistemas, para entrada en escaln unitario, con la funcin step, de la forma siguiente: >>step(G1,r,G2,b,Gs,g); %Grficos en rojo(red),azul(blue), verde (green).

Ejercicio 3: Calcular, con Matlab, la funcin de transferencia global para el sistema de la figura.