Está en la página 1de 6

PRÁCTICA 6 DE FUNDAMENTOS DE AUTOMÁTICA (22 DE NOVIEMBRE DE 2011

)
INTRODUCCIÓN AL PROGRAMA MATLAB
INTRODUCCIÓN Y OBJETIVOS Esta práctica tiene como objetivo la familiarización del alumno con el MATLAB, que es un entorno de trabajo matemático y de simulación usado para modelar y analizar sistemas dinámicos. Maneja sistemas continuos y discretos, lineales y no lineales. MATLAB es un sistema abierto para el que hay disponibles distintos módulos especializados: Control Systems, Signal Processing, System Identification, Optimization, Robust Control, Neuronal Networks, Simulink,... La forma de trabajar con Matlab es a través 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 paréntesis. Si hay una sola salida, los corchetes son opcionales. La evaluación de las expresiones produce siempre una matriz. Por lo tanto, MATLAB trabaja con matrices. Los detalles previos más importantes a la hora de trabajar con Matlab son los siguientes: En la ventana de comandos cada instrucción ocupa una línea. Para que una instrucción continúe en la línea siguiente, se pondrán tres puntos al final de la incompleta. Si se pretende que en una línea haya más de una instrucción éstas se separarán mediante coma o punto y coma. Si al final de cada instrucción se coloca un punto y coma no se muestra el resultado. Para introducir comentarios se situará el símbolo % (lo que viene a continuación en la misma línea, no se procesa). Las flechas del teclado permiten repetir las instrucciones anteriores. El Matlab utiliza código C. Por lo tanto, distingue mayúsculas de minúsculas.

-

ESTRUCTURA DE DATOS EN MATLAB El elemento básico de Matlab es una matriz compleja de doble precisión. Esta representación es bastante general e incluye vectores, reales y complejos, y escalares. Incluye también 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 transposición (añadiendo 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

devuelve x como resultado de Ax=B % B*inv(A). ^ ej: C = A... .. separadas por punto y coma (o también con el retorno de carro). 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.. .. -. log10. -. \. Operaciones logarítmicas básicas: exp.Las matrices se introducen línea a línea. Se proporcionan de forma escueta para que se haga uso del comando help cuando sea necesario.*. 7 8 9] % Otra forma: . /.. *. 7 8 9] OPERACIONES Y FUNCIONES Operaciones algebraicas básicas: +. 3 6 9] 4 5 6. ^. >> A = [1 A = [ 1 4 7 2 2 5 8 3.. Operaciones sobre matrices: A\B B/A % inv(A)*B. cos. tan.mat % Carga el espacio de trabajo almacenado en el fichero n../.*B multiplica elemento a elemento 2 matrices c 11 =a 11 *b 11 c 12 =a 12 *b 12 COMANDOS GENERALES. . .mat % Llama a la ayuda de Matlab. % Proporciona ayuda del comando n % Borra la pantalla gráfica % Lista de demostraciones % Salir de Matlab (se puede hacer con las opciones del menú) REVISIÓN DE COMANDOS FRECUENTEMENTE USADOS Ejercicio 1: Repetir los comandos que se listan a continuación y observar los resultados. *Trabajo con matrices: >> A = [1 >> A = [1 0 7 2 2 5 8 3. 3 6 9] 0 5 6.. .. sqrt Operaciones trigonométricas básicas: sin.devuelve x como resultado de xA=B Operaciones sobre “arrays” (matrices elemento a elemento) +.\. . log. log2. pero proporciona más información % Borra el espacio de trabajo % Guarda el espacio de trabajo en un fichero de nombre n.

3 3] >> a(3. la matriz crecerá hasta encajar el nuevo elemento y llenará con ceros los espacios no especificados.S) X + 2 >> P = [1 8 15] + 15 >> roots(P) >> Q = [1 0 >> roots(Q) >> S = conv(P. tamaño 3x3 % Matriz de 0. tamaño 3x3 % Matriz diagonal de tamaño 4x4 % Comprobar el nuevo valor de a *Trabajo con vectores % Polinomio P = 1X2 + 8X % raíces del polinomio 4] % Polinomio Q = X2 + 4 % raíces del polinomio % producto de polinomios % raíces del polinomio S % Polinomio = residue(R. >> a =[1 2.5 %Vector de 6 elementos: de 5 a 0 con decrementos de 1 2 5 3] 6] >> x = 0:0.2) >> D = A(1: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.>> D = A(:.5:5 >> x = 5:-1:0 .Q) >> roots(S) >> R = [1 2] >> [a b c] % Descomposición en fracciones simples del % cociente de R entre S % a: numeradores % b: denominadores (raíces 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.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 característico Si a una matriz le añadimos un número de una dirección no existente.

^2 + Y .14] plot(x) % Gráfica en 2D title(‘Mi grafico’) xlabel(‘Eje x’) ylabel(‘Eje y’) grid 4 3 5 6 7 7. % Gráfico en tres dimensiones.3 8] 10. X = ones(size(y))*x.4 >> x = [1 2 3 >> y = [5. % otra forma de hacer lo mismo: >> for i=1:4. while. 2 -3 5 6 7] i=i+1.91 . % De otra forma >> i = 1 >> x =[1 2 3 4 >> while x(i)<4 x(i)=0. Z = sin(R).48 .5: 8. x x(i)=0.x if x(i) < 0 x(i)=0./R. if x(i) < 0 x(i)=0 else x(i)=1 end end. end.6 . end. x >> x = [-1 >> for i = 1:4.8 12. if): >> x=[1 1 1 >> for i = 2:3. .3 6.* Trabajo elemento a elemento >> x = 1:3 >> y = x >> z = x. end. 5 6 7] 4] else x(i)=1. Y = y*ones(size(x)).84 1 .y) >> >> >> >> >> >> >> 7. .8 10] x = -8: . >> x 1 1 1 x(i)=0.*y * Control de flujo del programa (for. y = x’.2 >> plot(x. % Permitido: Y=y*ones(x). R = sqrt(X . i=i+1. >>x  Trabajo con gráficas: >> >> >> >> >> >> x =[0. end. end 1] >> x =[1 2 3 4 >> i = 1 >> while x(i) < 4. mesh(Z) % Permitido: X=ones(y)*x.^2).

usan variables locales y no operan globalmente sobre el espacio de trabajo-. m = input(‘Tamaño de los grupos:’).m”) y el otro a un programa (“progr.m function result = fact(numero) % Devuelve en result el factorial de numero result=1. La ventaja que representan se basa en el ahorro de tiempo al poder tenerla preprogramadas. El formato debe ser el siguiente: Nombre del fichero: nombre. la primera línea del programa debe contener la palabra especial function. de transf.ent2. den1=[1 4 8]. for i=1:numero result=result*siguiente. combinaciones = fact(N)/(fact(N-m)*fact(m)) ANÁLISIS DE SISTEMAS DE CONTROL CON MATLAB MATLAB dispone de una colección de algoritmos. (2*s + 5)/(s^2 + 4*s + 8) . fact.. G1=tf(num1.. La representación se puede realizar tanto en variables de estado como en representación entrada/salida (las instrucciones ss2tf y tf2ss permiten conmutar entre un formato y el otro). que permiten desarrollar técnicas comunes de diseño.  En una función. 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) num2=[10].. las instrucciones del programa se ejecutarán secuencialmente de la misma forma que si se hubiesen introducido una a una en la ventana de comandos.m % Calcula las combinaciones de N elementos tomados de m en m N = input(‘Número de elementos:’). Tras ésta. end. Tras crearlos se ejecutará la instrucción “progr” en la ventana de comandos de MATLAB.m’.m”) que la utiliza.. Ejercicio 2. uno correspondiente a una función (“fact. evitando escribir todas las instrucciones cada vez.sal2. siguiente=numero. Las principales diferencias entre los scripts y las funciones son:  Las funciones permiten pasar parámetros por valor.. Mediante las opciones del menú de Matlab “File New/M-file” crear dos ficheros.m Instrucción: function [sal1.)  “Script”: (Programa) Fichero con el conjunto de instrucciones que queremos que se realicen tras la llamada. siguiente=siguiente-1.] = nombre(ent1.. progr. % Define la f. En nuestro curso utilizaremos modelos de sistemas lineales invariantes en el tiempo (LTI). análisis y modelado de sistemas de control. la mayoría en ficheros ‘.FUNCIONES Y ALMACENAMIENTO EN DISCO MATLAB permite la generación y el almacenamiento en disco de dos tipos de ficheros (mediante las opciones correspondientes del menú):  Función: Fichero con un conjunto de instrucciones que se ejecutarán tras su llamada y a la que se le pueden pasar parámetros y puede devolver valores.

de la forma siguiente: >>step(G1.>> den2=[1 4]. >>Gr = feedback(G1. de G1 con realimentación unitaria.G2) % F. G2. >>pole(Gr) % Calcula los polos de la función de transferencia Gr >>zero(Gr) % Calcula los ceros de la función de transferencia Gr >>zpk(Gr) % Representación de Gr con polos. de transf. de Transf.1) % F. de transferencia de G1 y G2 en paralelo. la función de transferencia global para el sistema de la figura. 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. Ejercicio 3: Calcular. % Gp = f. >> G2=tf(num2. con Matlab. de transferencia de G1 y G2 en serie.’b’.den]= tfdata(Gr. de G1 realimentado negativamente por >>Gc = feedback(G1. tal como se muestra a continuación: >>s = tf('s') % Define la función de transferencia s (Laplace variable).’r’. verde (green).den2) % Define la f. ceros y ganancia >>[num. %Gráficos en rojo(red).G2.azul(blue). para entrada en escalón unitario. con la función step. 10/(s + 4) Las funciones de transferencia también se pueden definir utilizando la variable ‘s’.Gs. de Transf.’g’). 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 gráficamente la respuesta del sistema con entrada escalón >>step(G1). .'v') % num = polinomio del numerador de Gr % den = polinomio del denominador de Gr Se puede comparar la respuesta de varios sistemas.