You are on page 1of 37

MATLAB

1. INTRODUCCIÓN.
• Inicialmente fue desarrollado para facilitar el estudio en
cursos de teoría de matrices, álgebra lineal y análisis numérico
(MATrix LABoratory), pero actualmente va más allá, ya que es
un sistema interactivo y un lenguaje de programación con
capacidad de ejecución técnica y científica en general.
• Su elemento básico es una matriz, que no requiere
dimensionamiento previo y se escribe tal como se hace
matemáticamente, lo cual aporta facilidad y rapidez de uso.
• Es, además, una herramienta potente para la representación
gráfica.
• Se utiliza en muchos campos, nos centraremos en su utilidad
como herramienta en control.

2. FUNDAMENTOS DE MATLAB.
• Nada más ejecutar el programa, aparece la
ventana principal de MATLAB:

indicador de espera para la
introducción de los comandos
propios de Matlab

3333 • Se ha creado una variable "a" en el espacio de trabajo (workspace) con su valor y tipo de dato: numérico doble.3333 . • Se introducen como se escriben matemáticamente: >> a = 4/3 respuesta: a = 1.2. en este caso: >> a respuesta: a = 1.1. Expresiones. • También se puede consultar su valor escribiendo el nombre que se le ha dado a la expresión.

.

3333 • Para que no aparezca la respuesta en pantalla.) al final de la expresión: >> b = 4+7. >> . se genera la variable ans que equivale a answer (respuesta): >> 4/3 respuesta: ans = 1. • Al introducir una expresión sin crear una variable. se añade un punto y coma (.• Matlab reconoce hasta 19 caracteres como nombre de variable y es sensible a las mayúsculas (a A).

funciones y variables definidas previamente: >> c = a * ( b .• Las expresiones pueden formarse con secuencias de números.6005 + 1. operadores. • Matlab contiene funciones que se pueden incorporar a expresiones: >> y = sqrt(1+4*i) respuesta: y = 1. NaN (Not a Number.3333 • Operadores: Los usuales (+. * (multiplicación). Inf (Infinito). -. j (  1). pi. \ (división por la izquierda) • Variables predefinidas: i.1) respuesta: c= 13.2486 i .Indefinido). /) y además: ^ (potencia).

• Se crean con un editor de texto y se nombran con extensión ". cuando se escribe el nombre del fichero en el indicador de comandos de Matlab (>>). se ejecutan los comandos que contiene dicho fichero. .2.2. • De forma que. • Un fichero de trabajo (script) contiene secuencias de comandos ejecutables en el entorno de trabajo Matlab. Creación de ficheros de trabajo.m".

.

-Las filas se separan por punto y coma ó CR. • Una matriz se introduce listando sus elementos entre corchetes [ ]: . vectores y polinomios. >> A = [1 2. 3 4] respuesta: A= 1 2 3 4 Se reconocen sólo matrices rectangulares.Los elementos de distintas columnas se separan por comas o por espacio en blanco. Matrices. con igual número de columnas en cada fila.3. .2.

00 2.0000 1.5000 1.25:2 nuevo = 1.2) = 5 respuesta: 1 2 3 5 • Un vector es una matriz de dimensión 1xn ó nx1 : >> v = [sin(pi/3) -7^3 a+1] A= v = 0.7500 2.0000 . >> nuevo = 1:0.333 • Se pueden crear vectores especiales utilizando ":" >> n = 1:10.8660 -343. genera un vector fila con elementos de 1 a 10.• Los elementos individuales de una matriz se referencian mediante índices entre paréntesis: >> A(2. con incremento 1.2500 1.

>> A = A(L.Añadir una fila a la matriz A : >> A = [A.Extraer una submatriz de A: >> B = A(2:3. .Se utiliza ":” para designar "todos los elementos” >> A(1. [7 8]] respuesta: A = 1 2 3 5 7 8 .:) Devuelve la 1ª fila entera. >> L = A(:.1:2) respuesta: B = 3 5 7 8 .:).• Se pueden manipular matrices de forma muy flexible: .2) > 5. Reemplaza las filas de A cuyos elementos de la 2ª columna sean > 5.

p = s2 + 5s + 6 >> p = [1 5 6] Si no existe algún coeficiente del polinomio habrá que introducir un cero: Por ejemplo. Por ejemplo.• Los polinomios se describen en Matlab mediante vectores con los coeficientes del polinomio en orden de potencias decrecientes. q = s4 + 5 >> q = [1 0 0 0 5] .

1) respuesta: (evalúa “p = s2 + 5s + 6” en s = 1) ans = 12 • Las raíces se obtienen con la función roots : >> r = roots(p) respuesta: r = -3 -2 • La función poly permite construir polinomios a partir de sus raíces: >> t = poly([-4 -5]) respuesta: t = 1 9 20 .• Se evalúan con la función polyval : >> polyval(p.

4.2. Operaciones con matrices.Q y = Q.0.x = Q y. >> B + D respuesta: ans = 6 0 0 8 >> B * D respuesta: ans = 5 0 0 12 La división puede ser izquierda (\) ó derecha (/): P.0.P-1 Los índices tienen que coincidir.P = Q   x = P-1. 0 2].   x=P\Q y=Q/P . 0.6]. D = [1. • La aritmética es la misma que la utilizada con escalares: >> B = [5.

>> Datos.3.* [4 5 6] respuesta: respuesta: ans = 1 4 9 ans = 4 10 18 .^2 >> Datos .• Para obtener la traspuesta de una matriz o vector se utiliza el apóstrofe (’  está en la misma tecla que ?): >> A = [1.4].2. >> A´ respuesta: ans = 1 3 2 4 • Para operar sobre una matriz ó un vector. elemento a elemento. se utiliza un punto delante del operador: >> Datos = [1 2 3].

while. • Las funciones son secuencias de sentencias que ejecutan una tarea independiente. if. break. Una función se diferencia de un fichero de comandos script básicamente en su primera línea: function [argumentos salida] = nombre(argumentos entrada). .5. error. • Para programar se utilizan las funciones típicas de control de flujo: for.2. Creación de funciones. • Las variables generadas por una función son locales. • Pueden ser usadas como parte de una expresión.

argumento=angle(complejo).6056 a = 0.argumento) >> [m. compass(modulo.5880 .a]=polares(3+2i) m = 3.argumento]= polares(complejo) modulo= abs(complejo).• Ejemplo: function [modulo. figure.

6. • La función plot genera gráficos bidimensionales: • Por ejemplo: >> x = -pi:pi/10:pi.sin(tan(x)). >> plot(x.2.y) . >> y = tan(sin(x)) . GRÁFICOS. • Matlab suministra una importante colección de funciones gráficas debido a la facilidad de comprensión que aporta la percepción visual de datos.

'r') • O bien subdividir la ventana en gráficas con distintos ejes con subplot: >> figure.• Se pueden dibujar varias gráficas sobre los mismo ejes con hold on: >> hold on >> plot(x. subplot(121). plot(x.cos(x).y) >> subplot(122).cos(x).'r') . plot(x.

Polos y Ganancia (ZPK) . CREACIÓN DE MODELOS Las herramientas de control de sistemas. de los que veremos dos: • Modelos de Función de Transferencia (TF) • Modelos de Ceros. en MATLAB.3.1. incluyen comandos para la creación de cuatro tipos básicos de modelos para sistemas lineales invariantes en el tiempo (LTI). HERRAMIENTAS DE CONTROL 3.

.Creando modelos LTI (Lineales e Invariantes en el Tiempo) TF Función de Transferencia SS Espacio de estados ZPK Ceros-Polos-Ganancia FRD Respuesta en frecuencia Estas funciones toman los datos del modelo como entradas y devuelven objetos que engloban estos datos en una variable única de MATLAB.

Modelos de Función de Transferencia donde: son los coeficientes del numerador son los coeficientes del denominador .• FUNCIÓN DE TRANSFERENCIA: Un modelo de la función de transferencia (TF) se define mediante sus polinomios del numerador y del denominador.

% Polinomio del Denominador >> H = tf (num. .>> num = [1 0].den). % Polinomio del Numerador >> den = [1 2 10].

se habrá creado el objeto H: >> H Transfer function: s -------------s^2 + 2 s + 10 .Y también se puede especificar este modelo como expresión de ‘s’: >> s =tf(‘s’). % Crea la variable de Laplace En ambos casos. >> H = s/(s^2 + 2*s + 10).

• CEROS. . POLOS Y GANANCIA: Los modelos en forma de ceros. polos y ganancia (ZPK) son la forma factorizada de los modelos en función de transferencia.

>> p = [2 1+i 1-i].p. >> H = zpk(z. % Ceros % Polos % Ganancia Y también se puede introducir como una expresión de ‘s’: >> s = zpk(‘s’). polos y ganancia.Ganancia Se especifica un modelo en forma de ceros. utilizando el comando ZPK: >> z = 0.k). >> H = -2 * s/(s-2)/(s^2 – 2*s + 2). >> k = -2. .Ejemplo de Modelo Ceros – Polos .

5 0 -0.5 -1 Real Axis (seconds ) 1 1.5 -2 -2 -1.5 -1 -1.5 -1 -0.5 0 0.5 1 0.Podemos dibujar el mapa de polos y ceros de una función con pzmap: >> H Zero/pole/gain: -2 s -------------------(s-2) (s^2 .5 2 .2s + 2) Pole-Zero Map 2 >> pzmap(H) Im ag in ary A xis (sec o n d s -1 ) 1.

se devuelven matrices de celdas.p.'v') num = 0 1 1 den = 1 2 5 Esta sintaxis devuelve dos vectores fila debido al parámetro ‘v’ especificado.[1 2 5]) Transfer function: s+1 ------------s^2 + 2 s + 5 Extraemos los coeficientes del numerador y denominador mediante: >> [num. sea h: >> h = tf([1 1].2.den] = tfdata(h. RECUPERACIÓN DE DATOS: ACCESO RÁPIDO Se recuperan datos de forma rápida con los siguientes comandos: [num. En caso de no quedar especificado.k] = zpkdata(sistema) Por ejemplo.3. .den] = tfdata (sistema) [z.

CONVERSIÓN ENTRE MODELOS. si tenemos h como TF: La podemos convertir a ZPK: >> h >> g=zpk(h) Transfer function: s+1 ------------s^2 + 2 s + 5 Zero/pole/gain: (s+1) -------------(s^2 + 2s + 5) . Es posible convertir modelos LTI de un tipo a otro: >> sistema = tf(sistema).3. >> sistema = zpk(sistema).3. % convierte el modelo a TF % convierte el modelo a ZPK Por ejemplo.

3. Existen una serie de funciones para ayudar a construir modelos complejos.4. Entre ellas se incluyen funciones que efectúan: Conexiones en serie y paralelo (SERIES. CONEXIÓN ENTRE MODELOS. PARALLEL) Conexiones de realimentación (FEEDBACK) .

Una conexión en serie es equivalente al producto de los modelos: >> H = H2 * H1.Se pueden conectar en serie los modelos H1 y H2 utilizando: >> H = series(H1. . H2).

se pueden conectar dos modelos en paralelo: >> H = parallel(H1. H2). Y sería equivalente a la suma de los modelos: >> H = H2 + H1. .De igual forma.

+1). H2). Para aplicar realimentación positiva habrá que especificarlo: >> H = feedback (H1. .Se pueden conectar dos modelos para realizar una configuración en lazo cerrado con realimentación negativa mediante: >> H = feedback (H1. H2.

G) (b) .Se ejecutan los siguientes lazos de realimentación negativa mediante: (a) >> LazoCerrado_a = feedback(G.1) >> LazoCerrado_b = feedback(1.

El orden que debe darse a estos modelos debe coincidir con el de la numeración creciente asignada a sus correspondientes bloques. output) sysba es el modelo del sistema MIMO resultante de la agrupación de los modelos de todos los bloques que intervienen en el diagrama considerado. input.5. output es un vector cuyas componentes son los índices asignados a los bloques que tienen como salida a una de las variables de salida del sistema global. q . REDUCCIÓN DE DIAGRAMAS DE BLOQUES: connect La sintaxis de la función connect es la siguiente: sysbc = connect( sysba. q es una matriz que establece las conexiones existentes entre los diferentes bloques . Para su obtención podrá hacerse uso de la función append.3. input es un vector cuyas componentes son los índices asignados a los bloques que tienen como entrada a una de las variables de entrada del sistema global.