You are on page 1of 65

TEOR IA DE CONTROL

Didier Giraldo B. e Iv an Tabares G.

1997

APENDICE

PROGRAMA MATLAB

B.1

Introducci on

Programa que sirve para c alculo num erico y visualizaci on de alto desarrollo. El ambiente es tal que los problemas y soluciones se expresan como se escriben matem aticamente, sin la tradicional programaci on. Es un sistema interactivo cuyo elemento b asico de datos es una matriz que no requiere dimensionamiento. MATLAB tambi en tiene cajas de herramientas, toolboxes, que resuelven clases particulares de problemas tales como procesamiento de se nales, dise no de sistemas de control, simulaci on de sistemas din amicos, identicaci on de sistemas, redes neurales, sistemas de control robustos, optimizaci on y otros (Matem atica simb olica). La cualidad mas importante del MATLAB es que es f acilmente extendible. Esto permite crear nuestras propias aplicaciones. El contenido de este ap endice describe: a) Como entrar matrices simples, los elementos para construirlas, declaraciones y variables del MATLAB. b) Como conseguir informaci on del espacio de trabajo y como guardarla. c) N umeros y expresiones aritm eticas. d) Formato de salida. e) Ayuda. f) Funciones del MATLAB.

B.2

Entrando matrices simples

El MATLAB trabaja fundamentalmente con una clase de objeto, una matriz num erica rectangular con elementos posiblemente complejos. Se pueden entrar de diferentes maneras: a) Una lista expl cita de elementos. b) Generar matrices usando declaraciones y funciones propias del MATLAB. 297

298 PROGRAMA MATLAB c) Crear matrices en archivos M. d) Cargar matrices de archivos de datos externos. El lenguaje MATLAB no contiene declaraciones DIMENSION ni TYPE. Separa la memoria necesaria para el almacenamiento. Entrando una lista expl cita de elementos se siguen las siguientes convenciones: a) Se separa la lista de elementos con comas (,) o espacios en blanco. b) El punto y coma (;) se usa para indicar los nales de las las. c) El comienzo y el n de la matriz se indica con corchetes [ ]. Ejemplo B.1 . A = [1 2 3; 4 5 6; 7 8 9] Esta declaraci on genera la siguiente salida: A= 1 4 7 2 5 8 3 6 9

La matriz A es guardada por el MATLAB para uso posterior. o ENTER. El punto y coma (;) puede ser reemplazado por el RETURN Se pueden entrar matrices desde archivos de disco si su nombre tiene extensi on m. Si un archivo llamado gena m tiene las siguientes l neas de texto: A= [1 4 7 2 5 8 3 6 9]

entonces la declaraci on gena

lee el archivo y genera A.

B.3

Elementos de las matrices

Estos pueden ser cualquier expresi on del MATLAB. Ejemplo B.2 . x = [1.3 sqrt (3) resulta en: x = 1.3000 1.7321 4.8000 los elementos de la matriz pueden ser referenciados con ndices dentro de par entesis. (1 + 2 + 3) 4/5]

B.4 Declaraciones y variables del MATLAB Ejemplo B.3 . x (5) = abs (x (1)) produce: x = 1.3000 1.7321 4.8000 0 1.3000

299

Note que el tama no de x se incrementa autom aticamente para acomodar el nuevo elemento y que los elementos no denidos se igualan a cero. Se pueden construir matrices grandes usando matrices peque nas como elementos. Por ejemplo, para adicionar otra la a la matriz A : r = [10 11 12] ; A = [A ; r] que resulta en: A= 1 4 7 10 2 5 8 11 3 6 9 12

Se puede extraer matrices peque nas de matrices grandes usando dos puntos (:). Ejemplo B.4 . A = A (1 : 3, :) ; toma las tres primeras las y todas las columnas de la A actual.

B.4

Declaraciones y variables del MATLAB

El MATLAB es un lenguaje de expresi on. Es decir, interpreta y eval ua las expresiones escritas. Las declaraciones son frecuentemente de la forma: variable = expresio n o simplemente expresio n. Las expresiones se pueden componer de operadores y otros caracteres especiales, funciones y nombres de variables. La evaluaci on de la expresi on produce una matriz la cual se muestra en la pantalla y se asigna a la variable. Si se omite el nombre de la variable y el signo =, MATLAB autom aticamente crea una variable con el nombre ans.

300 PROGRAMA MATLAB Ejemplo B.5 . 1900/81 produce: ans = 23.4568 Una declaraci on normalmente termina con RETURN o ENTER. Sin embargo, o ENTER el si el u ltimo caracter es punto y coma (;) antes del RETURN resultado no se muestra en la pantalla pero s se realiza la asignaci on. Ejemplo B.6 . p = eig (A) ; halla los valores propios de A pero no los muestra en pantalla. Si es necesaria m as de una l nea para la expresi on se puede usar (3 puntos) y el RETURN para indicar que contin ua en la pr oxima l nea. Se pueden formar variables y nombre de funciones con una letra, seguida por cualquier n umero de letras y digitos. MATLAB recuerda s olo los primeros 19 caracteres de un nombre. Adem as, distingue entre may usculas y min usculas. Todos los nombres de funciones deben ser en min usculas. As , inv (A) invierte A, pero INV (A) se reere a una funci on no denida.

B.5

Informaci on sobre el espacio de trabajo

Para listar las variables en el espacio de trabajo escriba: no de las variables se puede usar whos . Cada elemento who . Para ver el tama de una matriz real requiere 8 bytes de memoria. Las variables ans y eps son permanentes y no se pueden borrar. eps es una tolerancia para determinar aspectos tales como singularidades y rango. eps = 252 2.221016 . Se le puede reasignar otro valor, incluyendo cero. El MATLAB tiene la facilidad help. Ensayar el comando help lookf or. As como help what y help which.

B.6

C omo terminar el programa y guardar el

espacio de trabajo
Para terminar el programa escribir quit o exit . Antes de parar se puede guardar el espacio de trabajo con el comando save , el cual guarda todas las variables en un archivo del disco llamado matlab.mat.

B.8 Formato de salida

301

La pr oxima vez que se invoque el MATLAB se puede ejecutar el comando load para recuperar el espacio de trabajo desde matlab.mat. save y load se pueden usar con otros nombres de archivos, o tambi en guardar u nicamente las variables que se deseen. guarda las variables x, y y z en el archivo llamado temp.mat. As , save temp x y z load temp , recupera todas las variables del archivo temp.mat. load y save pueden tambi en importar y exportar archivos de datos ASCII.

B.7

N umeros y expresiones aritm eticas

Usa notaci on convencional decimal, con el punto decimal opcional. Se puede incluir la potencia 10 como un factor de escala o una unidad compleja como un sujo. Ejemplos de n umeros son: 3 99 0.001

9.6397238 1.602e 20 6.022e 23 2i 3.14159i 3e5i

La precisi on relativa de los n umeros es eps que equivale a, aproximadamente, 16 digitos decimales signicativos. El rango es de 10308 hasta 10308 . Se pueden construir expresiones con las operaciones aritm eticas usuales y con reglas de precedencia: + (suma), (resta), (multiplicaci on), / (divisi on por la derecha), \ (divisi on por la izquierda), (potenciaci on). Los par entesis sirven para afectar la precedencia. La funci on pi calcula (usa 4 atan (1)). La funci on Inf es usada para innito. Ejemplo B.7 . s = 1/0 = Inf La variable NaN implica no un n umero. C alculos como Inf /Inf o 0/0 la producen. MATLAB maneja n umeros complejos, indicados por las funciones especiales i y j , en todas sus operaciones y funciones. Ejemplo B.8 . A = [1 + 5i 2 + 6i; 3 + 7i 4 + 8i]

Un nombre de una funci on interna puede ser un nombre de una variable, pero en este caso no es disponible la funci on interna dentro del actual area de trabajo hasta que la variable no sea borrada. Si se usa i y j como variables y se sobreescribe sus valores, se puede generar una nueva unidad de complejos y usarse de la manera usual:

302 PROGRAMA MATLAB

ii = sqrt (1) z = 3 + 4ii

B.8

Formato de salida

El comando f ormat afecta la forma en que se muestran las matrices en la pantalla, no c omo se calculan o guardan. MATLAB desarrolla todos los c alculos en doble precisi on. Si todos los elementos de una matriz son exactos, la matriz se muestra en un formato sin puntos decimales. Si por lo menos un elemento de la matriz no es un entero exacto, se dispone de varios formatos de salida. El formato por defecto es el short, el cual muestra aproximadamente 5 d gitos decimales signicativos. Los otros formatos muestran m as d gitos signicativos o usan notaci on cient ca. Ejemplo B.9 . x = [4/3 1.2345e 6] Los formatos, y la salida resultante para este vector, son: format short 1.3333 0.0000

format short e 1.3333e + 00 1.2345e 06

format long 1. 3333 3 } 0.00000123450000 | {z


14

format long e 1. 3333 3 } e + 00 1.23450 0 e 06 | {z


15

B.11 Divisi on de matrices

303

format bank 1.33 0.00

f ormat hex f ormat + Con los formatos short y long si el elemento mas grande de una matriz es mayor que 1000 o menor que 0.001, la matriz total se muestra con un factor de escala com un.

B.9

Funciones

Gran parte de la potencia del MATLAB proviene de su extensivo conjunto de funciones. Algunas son intr nsecas, otras son disponibles en la librer a de archivos externos tipo m, distribu da con el MATLAB (las herramientas). El usuario puede crear sus propias funciones para aplicaciones mas especializadas (posteriormente se hablar a de los archivos m). Usar el help para ver las diferentes categor as de funciones anal ticas disponibles en el MATLAB (matem atica elemental, funciones especiales, matrices elementales, especiales, ). Las funciones pueden tener varios argumentos de entrada y varias salidas. Ejemplos: theta = atan2 (y, x), usa 2 argumentos de entrada. [V, D] = eig (A), retorna 2 matrices, V y D, con los vectores y valores propios de la matriz A, respectivamente. Las salidas son delimitadas con corchetes [ ] y separadas con comas. [y, i] = max (x), regresa el m aximo valor del vector x en y , y el ndice respectivo en i. MATLAB nunca modica la entrada o argumentos de entrada a la funci on. Siempre retorna las salidas de una funci on en los argumentos del miembro izquierdo.

B.10

Operaciones matriciales
0

El caracter (prima o ap ostrofe) denota la transpuesta de una matriz. Si z es una 0 transpuesta de la conjugada z . Para la transpuesta no matriz con complejos, z es la0 0 conjugada, usar z. o conj z . + y denotan suma y resta de matrices siempre y cuando tengan las mismas dimensiones. Si uno de los operandos es un escalar, este es sumado o restado de todos los elementos del otro operando. Ejemplo B.10 . y = [1 2 3] 1 = [0 1 2]

304 PROGRAMA MATLAB denota multiplicaci on de matrices. V alida si hay conformabilidad en la multiplicaci on de las matrices.

B.11

Divisi on de matrices

Se usan 2 s mbolos: \ y /. Si A es cuadrada no singular, A\B y B/A corresponden formalmente a la multiplicaci on por la izquierda y por la derecha de B por la inversa de A, es decir, inv (A) B y B inv (A). Sin embargo el resultado se obtiene sin el c alculo de la inversa. En general: x = A\B es una soluci on a A x = B x = B/A es una soluci on a x A = B Ap = A A } , si p es un entero > 1 | A {z
p

Ap = V D. p/V , para otros valores de p donde: [V, D] = eig (A)

B.12

Funciones matriciales

MATLAB considera expresiones como exp (A) y sqrt (A) como operaciones sobre cada uno de los elementos de la matriz. Se pueden calcular tambi en funciones trascendentales matriciales, tales como la matriz exponencial y la matriz logaritmo, las cuales se denen solo para matrices cuadradas (son generalmente dif ciles de calcular). Una funci on matem atica trascendental se interpreta como una funci on matricial si se adiciona una m al nombre de la funci on, ejemplo: expm (A) y sqrtm (A). Hay 3 denidas expm, logm y sqrtm. Otras funciones matriciales elementales incluyen: poly , polinomio caracter stico. det, determinante. trace, la traza, y otras.

B.13

Operaciones sobre arreglos

Esto se reere a operaciones aritm eticas sobre cada elemento de una matriz. 0 on sobre Un punto (.) precediendo un operador (, \, /, , ) indica una operaci arreglos.

B.15 Operaciones l ogicas

305

Para suma y resta, las operaciones sobre arreglos y sobre matrices son las mismas, as + y se pueden considerar como operaciones sobre matrices o arreglos. . denota la multiplicaci on de arreglos. Ejemplo B.11 . Si: x = [1 2 3] ; entonces: z = x. y = [4 10 18] A ./B y A .\B dan los cocientes de los elementos individuales. Ejemplo B.12 . z = x.\y = [4.0000 2.5000 2.0000] . denota potencias de arreglos. Ejemplo B.13 . Para el x y y anterior: z = x.y = [1 32 729] z = x.2 = [1 4 9] (el exponente es un escalar) z = 2. [x y ] = [2 4 8 16 32 64] (la base es un escalar) y = [4 5 6] ;

B.14

Operaciones relacionales

Se dispone de 6 operadores relacionales para comparar 2 matrices de iguales dimensiones. < menor que. <= menor o igual que. > mayor que. >= mayor o igual que. == igual. = no igual. MATLAB compara los pares de elementos correspondientes. El resultado es una matriz con unos y ceros, en donde uno representa cierto y cero falso. Ejemplo B.14 . 2 + 2 = 4 es simplemente cero

306 PROGRAMA MATLAB

B.15

Operaciones l ogicas

Los operadores &, | y son los operadores l ogicos Y , O y N O. C = A & B es una matriz cuyos elementos son unos en donde A y B tengan elementos diferentes de cero, y ceros en donde cualquiera tenga un cero. A y B deben tener las mismas dimensiones, a menos que una sea un escalar. Un escalar puede operar con otro escalar o una matriz. C = A | B es una matriz cuyos elementos son unos en donde A o B tengan elementos diferentes de cero, y ceros en donde ambas tengan ceros. A y B deben tener las mismas dimensiones, a menos que una sea un escalar. B = A es una matriz cuyos elementos son unos en donde A tiene ceros y ceros en donde A tiene elementos diferentes de cero. Las funciones any y all son u tiles con operaciones l ogicas. any (x) retorna 1 si cualquiera de los elementos de x son diferentes de cero, retorna cero de otra manera. all (x) retorna 1 s olo si todos los elementos de x son diferentes de cero. Estas funciones son u tiles particularmente en declaraciones como: if all (A < 0.5) haga algo end Si los argumentos de any y all son matrices, retorna un vector la con el resultado para cada columna. Para las siguientes funciones relacionales y l ogicas: any , all, find, exist, isnan, isinf , f inite, isempty, isstr, isglobal, issparse, usar help para saber que hacen.

B.16

Funciones matem aticas

Un conjunto de funciones matem aticas elementales se aplican a los arreglos. Ejemplo B.15 . A = [1 2 3; 4 5 6] 1 1 1 B = cos (pi A) = 1 1 1

MATLAB incluye todas las funciones trigonom etricas y exponenciales: sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh, asinh, acosh, atanh. Incluye estas funciones elementales: abs, angle, sqrt, real, imag, conj, round, x, oor, ceil, sign, rem, gcd, lcm, exp, log, log10. Algunas funciones especiales suministran capacidades m as avanzadas: bessel, beta, gamma, rat, erf , erf inv , ellipk, ellipj . As como las funciones elementales, las especiales tambi en operan sobre arreglos cuando los argumentos son matrices.

B.18 Referencia a los elementos de una matriz

307

B.17

Manipulaci on de vectores y matrices

Generaci on de vectores.
La declaraci on x = 1 : 5 genera un vector la que contiene los n umeros de 1 a 5 con incrementos unitarios. Es decir: x=12345 Se pueden usar incrementos diferentes a la unidad: y = 0 : pi/4 : pi resulta en: y = 0.0000 0.7854 1.5708 2.3562 3.1416 Los incrementos tambi en pueden ser negativos: z = 6 : 1 : 1 da: z=654321 La notaci on (:) permite la generaci on f acil de tablas. Para obtener una tabla en forma vertical se traspone el vector la obtenido de la notaci on (:), se calcula una columna de los valores de una funci on y luego se forma la matriz de las 2 columnas. Ejemplo B.16 . x = (0.0 : 0.2 : 3.0) ; y = exp (x) . sin (x) ; [x y ] produce: ans = 0.0000 0.2000 . . . 3.0000 0.0000 0.1627 . . . 0.0070
0

Otras funciones para generar vectores son: logspace, la cual genera vectores uniforme y logar tmicamente espaciados, y linspace, la cual permite especicar el n umero de puntos, mejor que el incremento: k = linspace (pi, pi, 4) k = 3.1416 1.0472 1.0472 3.1416

308 PROGRAMA MATLAB

B.18

Referencia a los elementos de una matriz

Los elementos individuales de una matriz se pueden referenciar indicando su posici on en par entesis. Por ejemplo A (i, j ) se reere al elemento de la i- esima la, j - esima columna. Un ndice puede ser un vector. Si x y v son vectores, entonces x (v) es: [x (v (1)) , x (v (2)) , , x (v (n))] En matrices, vectores como ndice permiten el acceso a submatrices contiguas y no contiguas. Por ejemplo sup ongase que A es una matriz de 1010, enotnces A (1 : 5, 3) especif ca la submatriz de 5 1 (vector columna) que contiene los primeros 5 elementos en la tercera columna de A. As mismo, A (1 : 5, 7 : 10) es la submatriz de 5 4 cuyos elementos son las primeras 5 las y las u ltimas 4 columnas de A. Usar (:) (colon) en lugar de un ndice indica todas las correspondientes las o columnas. Por ejemplo A (:, 3) es la tercera columna de A y A (1 : 5, :) contiene las primeras 5 las de A. Efectos sosticados se obtienen referenciando submatrices en ambos lados de una declaraci on de asignaci on. Ejemplo B.17 . A (:, [3 5 10]) = B (:, 1 : 3) reemplaza la tercera, quinta y decima columnas de A con las 3 primeras columnas de B. En general, si v y w son vectores cuyos elementos son enteros, entonces A (v, w) es la matriz obtenida tomando los elementos de A con ndices la de v e ndices columna de w. As A (:, n : 1 : 1) invierte las n columnas de A. Ejemplo B.18 . v = 2 : 2 : n; w = [3 1 4 1 6] ; A (v, w) A (:) en el lado derecho de una declaraci on de asignaci on denota todos los elementos de A pero organizados en un vector columna. Ejemplo B.19 . A = [1 2 ; 3 4 ; 5 6]

B.21 Matrices especiales

309

b = A (:) resulta en: b= 1 3 5 2 4 6

A (:) en el lado izquierdo de una declaraci on de asignaci on denota una matriz con las mismas dimensiones de A pero con el nuevo contenido de lado derecho de la asignaci on. Por ejemplo, la matriz A anterior es de 3 2, A (:) = 11 : 16 es ahora: 11 14 A = 12 15 13 16

B.19

Referencia a los elementos de una matriz

usando vectores con ceros y unos


Se pueden usar vectores con ceros y unos, creados generalmente de operaciones relacionales, para referirse a submatrices. Si A es una matriz de dimensiones m n y L es un vector de longitud m de ceros y unos, entonces A (L, :) especica las las de A en donde los elementos de L son diferentes de cero. x = x (x <= 3 std (x)) ; remueve del vector x aquellos elementos mayores que 3 desviaciones estandar. L = x (:, 3) > 100 ; x = x (L, :) ; reemplaza x con aquellas las de x cuya tercera columna es mayor que 100.

B.20

Matrices vac as

La declaraci on x = [ ] asigna una matriz de dimensi on 0 0 a x. El uso subsecuente de esta matriz no conduce a una condici on de error, propaga matrices vac as. La funci on exist sirve para probar la existencia de una matriz, y la funci on isempty sirve para indicar si una matriz es vac a. Una manera eciente de remover las y columnas de una matriz es asignarles una matriz vac a. Ejemplo B.20 .

310 PROGRAMA MATLAB

A (:, [2 4]) = [] borra las columnas 2 y 4 de A.

B.21

Matrices especiales

Una colecci on de funciones generan matrices especiales del a lgebra lineal y en procesamiento de se nales: compan, diag, gallery, hadamard, hankel, hilb, toeplitz , vander, etc. Ejemplo B.21 . Para generar la matriz companion asociada con el polinomio: s3 7s + 6 p = [1 0 7 6] A = compan (p) genera: 0 7 6 A= 1 0 0 0 1 0 eig (A) = [3 2 1]
t

Los valores propios de A son las ra ces del polinomio:

Otras funciones que generan matrices son: zeros, ones, rand, randn, eye, linspace, logspace, meshgrid (usar help para m as detalles).

B.22

Construcci on de matrices m as grandes

Se pueden formar matrices mas grandes de matrices peque nas, delimit andolas con h i 0 corchetes, [ y ]. Por ejemplo, si A es cuadrada, C = A A ; ones (size (A)) A.2 crea una matriz dos veces el tama no de A. Las dimensiones de las matrices m as peque nas deben ser consistentes. Otras funciones que manipulan matrices son: rot90, f liplr, flipud, diag , tril, triu, etc. La funci on size devuelve un vector con dos elementos: el n umero de las y el n umero de columnas de una matriz. La funci on length devuelve la longitud de un vector.

B.24 Polinomios y procesamiento de se nales

311

B.23

Funciones matriciales

Factorizaci on triangular : la funci on lu factoriza una matriz cuadrada con el producto de dos matrices esencialmente triangulares. Para obtener las dos matrices utilizar: [L, u] = lu (A) Factorizaci on ortogonal : la funci on qr, u til para matrices cuadradas y rectangulares, expresa la matriz como el producto de una matriz ortonormal y una matriz superior. Las dos matrices se obtienen con: [Q, R] = qr (A) Descomposici on en valores singulares : la asignaci on [U, S, V ] = svd (A) produce los tres factores en esta descomposici on (singular value decomposition). Las matrices U y V son ortogonales y la matriz S es diagonal. Los elementos de la diagonal de S son los valores singulares de A. Vectores y valores propios : la asignaci on [x, D] = eig (A) retorna en los elementos de la diagonal de D los valores propios de A y en las columnas de x los correspondientes vectores propios.

B.24

Polinomios y procesamiento de se nales

su ecuaci on caracter stica se calcula con:

Representaci on de polinomios. MATLAB los representa como vectores la que contienen los coecientes ordenados por potencias descendientes. Si: 1 2 3 A= 4 5 6 7 8 0 p = poly (A) p = [1 6 72 27]

que es la representaci on del polinomio s3 6s2 72s 27. Las ra ces de esta ecuaci on son: r = roots (p) 12.1229 r = 5.7345 0.3884

312 PROGRAMA MATLAB Estas ra ces son, por supuesto, los mismos valores propios de la matriz A. Tambi en se pueden obtener el polinomio original con poly : p2 = poly (r)

p2 = [1 6 72 27] Sea a (s) = s2 + 2s + 3 y b (s) = 4s2 + 5s + 6. El producto de los dos polinomios es la convoluci on de los coecientes. a = [1 2 3] ; b = [4 5 6]

c = conv (a, b)

c = [4 13 28 27 18] Se usa deconvoluci on para dividir polinomios: [q, r] = deconv (c, a)

q = [4 5 6]

r = [0 0 0 0 0] Otras funciones polinomiales son: poly , roots, polyval (evaluaci on polinomial), polyvalm (evaluaci on de un polinomio matricial), residue (expansi on en fracciones parciales), polyder, polyfit.

B.25

Procesamiento de se nales

En procesamiento de se nales, los vectores pueden contener datos de se nales muestradas secuencias. Para sistemas con m o ultiples entradas, cada la de una matriz correponde a un punto de muestra con los canales distribuidos a lo largo de las columnas de la matriz. Algunas funciones para el procesamiento de se nales son: abs, angle, conv, cov, deconv, f ft, if f t. La herramienta signal processing del MATLAB suminitra muchas funciones para el procesamiento de se nales.

B.27 Funciones como funci on

313

B.26

Filtraje de datos

La funci on y = f ilter (b, a, x) ltra los datos del vector x con el ltro descrito por los vectores a y b. Los datos ltrados son devueltos en el vector y. La ecuaci on de diferencia del ltro es: y (n) = b (1) x (n) + b (2) x (n 1) + + b (nb ) x (n nb + 1) + a (2) y (n 1) a (na ) y (n na + 1) o la funci on de transferencia z : b (1) + b (2) z 1 + + b (nb ) z (nb 1) Y (z ) = H (z ) = x (z ) 1 + a (2) z 1 + + a (na ) z (na 1)

Por ejemplo, para encontrar y gracar la respuesta al impulso (con n puntos) de un ltro digital: x = [1 zeros (1, n 1)] ; y = filter (b, a, x) ; plot (y,0 o0 ) la funci on freqz retorna la respuesta frecuencial de ltros digitales. La respuesta frecuencial es H (z ) evaluada alrededor del c rculo unitario en el plano complejo, z = ej . Se puede usar freqz para encontrar y gracar la respuesta frecuencial con n puntos. [h, w] = f reqz (b, a, n) ; mag = abs (h) ; phase = angle (h) ; semi log y (w, mag ) plot (w, phase) La herramienta signal processing incluye numerosas funciones para el dise no de ltros digitales. Sabiendo algunas t ecnicas de dise no de ltros, muchos m etodos son posibles. Por ejemplo, las t ecnicas de la transformaci on bilineal y el mapeo de polos y ceros convierten prototipos en el dominio s al dominio z. ff t (x) es la transformada discreta de Fourier del vector x. ff t (x, n) es la transformada discreta de Fourier del vector x con n puntos. Si x es una matriz, f ft (x) es la transformada r apida de Fourier de cada columna de x. if f t (x) es la transformada r apida inversa del vector x.

314 PROGRAMA MATLAB

B.27

Funciones como funci on

Una clase de funciones en MATLAB no trabaja con matrices num ericas, si no con funciones matem aticas. Estas funciones como funci on incluyen: a) Integraci on num erica. b) Ecuaciones no lineales y optimizaci on. c) Soluci on de ecuaciones diferenciales. MATLAB representa funciones matem aticas declar andolas como funci on en archivos tipo m. Por ejemplo, la funci on: f (x) = 1 1 + 6 2 (x 0.3) + 0.01 (x 0.9)2 + 0.04

se puede generar en MATLAB creando un archivo tipo m llamado humps.m con las siguientes declaraciones: f unction y = humps (x)

y = 1./ ((x .3) .2 + .01) + 1./ ((x .9) .2 + .04) 6; Una gr aca de esa funci on es, por ejemplo: x = 1 : .01 : 2; plot (x, humps (x) ,0 w0 )

100 80 60 40 20 0 -20 -1

-0.5

0.5

1.5

Figura B.1 Gr aca de la funci on humps

B.30 Funciones de ecuaciones diferenciales.

315

B.28

Integraci on num erica

El area bajo la curva f (x) se puede calcular num ericamente integrando f (x) . La funci on que se usa es quad o quad8. Por ejemplo, para integrar la funci on denida en humps.m desde 0 hasta 1 : q = quad (0 humps0 , 0, 1) q = 29.8583 N otese que el primer argumento de la funci on quad es el nombre del archivo, que contiene la funci on matem atica, entre comillas simples.

B.29

Ecuaciones no lineales y funciones de

optimizaci on
fmin m nimo de una funci on de una variable. fmins m nimo de una funci on multivariable. fzero cero de una funci on de una variable. Ejemplo B.22 . xm = f min (0 humps0 , .5, 1) xm = 0.6370 es el m nimo de la funci on denida en humps.m en la regi on 0.5 a 1. El valor de la funci on en el m nimo es: y = humps (xm) y = 11.2528 xz 1 = fzero (0 humps0 , 0) localiza el cero cerca a x = 0, es decir: xz 1 = 0.1316 y: xz 2 = fzero (0 humps0 , 1) localiza el cero cerca a x = 1, es decir: xz 2 = 1.2995 La herramienta optimization del MATLAB contiene varias funciones de funciones para ecuaciones no lineales y optimizaci on.

316 PROGRAMA MATLAB

B.30

Funciones de ecuaciones diferenciales

Las funciones para resolver ecuaciones diferenciales ordinarias son: ode23 m etodo de Runge-Kutta de orde 2/3. ode45 m etodo de Runge-Kutta de orde 4/5. Sea la ecuaci on diferencial de Vander Pol: .. x + x2 1 x +x=0 x 1 = x1 1 x2 2 x2 x 2 = x1 El primer paso es crear una funci on en un archivo tipo m con estas ecuaciones diferenciales. Si el archivo es llamado vdpol.m, entonces debe contener: f unction xdot = vdpol (t, x)

Reescribi endola como ecuaciones de estado:

xdot = zeros (2, 1) ;

xdot (1) = x (1) . (1 x (2) .2) x (2) ; xdot (2) = x (1) ; Para simular la ecuaci on diferencial denida en vdpol.m en el intervalo 0 t 20, se usar a ode23. to = 0 ; tf = 20;

xo = [0 0.25] ; % condiciones iniciales

[t, x] = ode23 (0 vdpol0 , to, tf, xo)

plot (t, x,0 w0 )

B.32 Gr acos en dos dimensiones.

317

3 2 1 0 -1 -2 -3 0

10

15

20

Figura B.2 Gr acas de las variables de estado de la ecuaci on de Vander Pol Para trabajar con ecuaciones diferenciales o simulaci on, el MATLAB tiene otra herramienta especializada llamada Simulink, la cual se estudiar a en detalle posteriormente.

B.31

Gr acos

El sistema de gr acos del MATLAB suministra una variedad de t ecnicas sosticadas para presentar y visualizar datos. Este sistema utiliza objetos gr acos, tales como l neas y supercies, los cuales se pueden controlar con los valores de las propiedades de los objetos. Sin embargo, ya que el MATLAB implementa un rico conjunto de funciones gr acas de alto nivel (en 2 y 3 dimensiones), la mayor a de las veces no es necesario accesar estos objetos gr acos a bajo nivel. Se describir a como usar las capacidades gr acas de alto nivel del MATLAB para presentar los datos.

B.32

Gr acos en dos dimensiones

Existe una variedad de funciones para presentar datos como gr acos en dos dimensiones. Cada una acepta entradas en forma de vectores o matrices y autom aticamente escalan los ejes para acomodar los datos de entrada. plot crea una gr aca de vectores o columnas de matrices. loglog crea una gr aca usando escalas logar tmicas en ambos ejes. semilogx crea una gr aca usando una escala logar tmica para el eje x y una escala lineal para el eje y. semilogy graca con escala logar tmica para el eje y y escala lineal para el x. Se pueden adicionar t tulos, etiquetas de ejes, cuadr culas y texto al gr aco usando:

318 PROGRAMA MATLAB title adiciona un t tulo al gr aco. xlabel adiciona una etiqueta al eje x. ylabel adiciona una etiqueta al eje y. text muestra una cadena de caracteres en la localizaci on que se especique. gtext coloca texto en el gr aco usando el rat on (mouse). grid habilita la cuadr cula. ginput permite leer valores del gr aco con el rat on.

B.33

Creaci on de un gr aco

Si y es un vector, plot (y) produce un gr aco lineal de los elementos de y contra el ndice de los elementos de y. Si se especican dos vectores como argumentos, plot (x, y) produce un gr aco de y contra x. Tambi en se pueden especicar m ultiples conjuntos de datos y denir el color y estilo de l nea para ser usado con cada conjunto de datos. Ejemplo B.23 . t = 0 : pi/100 : 2 pi; x = sin (t) ; y1 = sin (t + .25) ; y 2 = sin (t + .5) ; plot (x, y1,0 r0 , x, y2,0 g 0 ) plot genera un gr aco de y 1 contra x y y 2 contra x en los mismos ejes. El primer conjunto de datos ser a gracado con una l nea s olida roja y el segundo conjunto con una l nea discontinua verde. Con el n de mostrar las gr acas, en lugar del comando anterior se usar a: plot (x, y 1,0 w0 , x, y 2,0 w 0 ) el cual permite ver las gr acas en la pantalla con fondo negro y las curvas blancas. Sin embargo al importarlas a este texto los dos colores anteriores se intercambian. Las siguientes declaraciones le adicionan un t tulo al gr aco y etiquetas a los ejes: title (0 f ase0 ) xlabel 0 x = sen (t)0

B.34 Estilos de l neas, marcadores y colores.

319

Los resultados de este ejemplo se muestran en la Fig. B.3.


fase 1

0 ylabel 0 y = sen (t+)

0.5 y=sen(t+)

-0.5

-1 -1

-0.5

0 x=sen(t)

0.5

Figura B.3 Resultados del ejemplo B.23

B.34

Estilos de l neas, marcadores y colores

En la declaraci on plot (x, y, s), s es una cadena de 1, 2 o 3 caracteres (entre comillas simples) para especicar el estilo de l nea y colores en la gr aca. Los caracteres usados se muestran en la siguiente tabla: s mbolo y m c r g b w k color amarillo f ucsia cyan rojo verde azul blanco negro s mbolo x + . . . color punto c rculo x ma s estrella continua punteada raya punto discont nua

si no se especica un color, la funci on plot autom aticamente usa los colores de arriba. Para una l nea, el color por defecto es amarillo, ya que este es el color m as visible sobre un fondo negro. Para m ultiples l neas, la funci on plot utiliza en forma c clica

320 PROGRAMA MATLAB los 6 primeros colores de la tabla. Los s mbolos , , x, + y son marcadores escalables.

B.35

Adici on de l neas a un gr aco existente

Se pueden adicionar l neas a un gr aco existente utilizando el comando hold. Cuando se usa la declaraci on hold on, MATLAB no remueve las l neas existentes y se pueden adicionar nuevas l neas en los ejes actuales. Sin embargo, los ejes se pueden reescalar si los nuevos datos est an fuera del rango de los datos anteriores. Por ejemplo, utilizando los mismos datos del ejemplo anterior: plot (x,0 w0 ) ; hold on ; plot (y 1,0 w 0 ) ; hold of f

plot (y 2,0 w .0 ) ;

Estas declaraciones producen un gr aco con tres curvas como se muestra en la Fig. B.4.

0.5

-0.5

-1 0

50

100

150

200

250

Figura B.4 Gr acas de x, y 1, y 2 del ejemplo B.23

B.36

Datos complejos

Cuando los argumentos de plot son complejos, la parte imaginaria es ignorada excepto cuando el argumento de plot es uno s olo. En este caso, se obtiene una gr aca de la parte real contra la parte imaginaria. As , plot (z ), en donde z es un vector o una matriz de complejos, es equivalente a plot (real (z ) , imag (z )) .

B.38 Gr acos de matrices. Ejemplo B.24 . plot (eig (randn (20, 20)) ,0 x0 ) Esta gr aca se muestra en la Fig. B.5.

321

4 3 2 1 0 -1 -2 -3 -4 -5 0 5

Figura B.5 Gr aca del ejemplo B.24 Para gracar m as de una matriz compleja, se deben tomar expl citamente las partes reales e imaginarias.

B.37

El archivo tipo m peaks

Futuros ejemplos usan el archivo tipo m llamado peaks para generar una matriz de datos. Los datos se basan en una funci on de dos variables que tiene m aximos y m nimos: x 2 2 2 2 2 2 1 x3 y5 ex y e(x+1) y f (x, y) = 3 (1 x)2 ex (y+1) 10 5 3 El archivo peaks crea una matriz que contiene los valores de la funci on para valores de x y y en el rango de 3 a 3. Los valores de x var an a lo largo de las columnas y los de y a lo largo de las las. Se puede espec car el tama no de la matriz cuadrada pas andole un argumento a peaks. Ejemplo M = peaks (20) ; crea una matriz de datos de 20 20. Si se omite el argumento de entrada, por defecto el tama no es 49.

B.38

Gr acos de matrices

La funci on plot puede tomar un solo argumento matricial: plot (Y ) .

322 PROGRAMA MATLAB Ella dibuja una curva por cada columna de Y . El eje x corresponde al ndice de las las, 1 : m, en donde m es el n umero de las en Y . Por ejemplo, plot (peaks,0 w0 ) produce un gr aco con 49 curvas. V ease Fig. B.6.

10

-5

-10 0

10

20

30

40

50

Figura B.6 Resultado de plot(peaks,0 w0 ) Esta gr aca es una vista desde la supercie peaks mirando a lo largo del eje x (es on = 0 ). decir, una vista desde el azimuth = 90 y elevaci La funci on plot tambi en acepta dos vectores o dos matrices como argumentos. Por ease Fig. B.7. ejemplo, plot (peaks, rot90 (peaks) ,0 w0 ) . V
10

-5

-10 -10

-5

10

Figura B.7 Resultado de plot(peaks, rot(peaks),0 w0 )

B.38 Gr acos de matrices.

323

En general, si plot es usada con dos argumentos y si X o Y tienen m as de una la o columna, entonces: a) Si Y es una matriz y x es un vector, plot (x, Y ) graca sucesivamente las las o columnas de Y contra el vector x, usando diferentes colores o tipos de l neas para cada una. La orientaci on por las o columnas se selecciona dependiendo del n umero de elementos en x. Es decir, si x tiene m elementos y Y es m n entonces se gracan las columnas de Y contra x; y si x tiene n elementos y Y es m n se gracan las las de Y contra x. Si Y es cuadrada, se gracan las columnas. b) Si X es una matriz y y es un vector, plot (X, y) graca cada la o columna de X contra el vector y . Ejemplo B.25 . y = 1 : 49; V ease Fig. B.8. plot (peaks, y,0 w0 )

50 40 30

20 10 0 -10

-5

10

Figura B.8 Resultados del ejemplo B.25 c) Si X y Y son matrices del mismo tama no, plot (X, Y ) graca las columnas de X contra las columnas de Y. Se puede usar la funci on plot con m ultiples pares de argumentos matriciales: plot (X1 , Y1 , X2 , Y2 , ) Cada par X Y es gracado generando m ultiples curvas. Los diferentes pares pueden ser de dimensiones diferentes. Ejemplo B.26 . Almacenar en un archivo tipo m la siguiente matriz:

324 PROGRAMA MATLAB weather = [30 31 38 49 59 68 74 72 65 55 45 34 4.0 3.7 4.1 3.7 3.5 2.9 2.7 3.7 3.4 3.4 4.2 4.9]

con el nombre mweather.m. Las declaraciones: temp = weather (:, 1) ; precip = weather (:, 2) ;

despu es de usar la declaraci on mweather, almacena las columnas de temperatura y precipitaci on en vectores individuales. Gracar la temperatura contra el n umero del mes y la precipitaci on contra el n umero del mes en la misma ventana, utilizando plot y subplot: subplot (2, 1, 1) ; plot (temp) subplot (2, 1, 2) ; plot (precip)

80 60 40 20 0 5 4 3 2 0 2 4 6 8 10 12 2 4 6 8 10 12

Figura B.9 Gr acas del ejemplo B.26 La Fig. B.9 muestra las dos curvas. Las siguientes declaraciones producen un gr aco como se muestra en la Fig. B.10 que muestra la relaci on entre temperatura y precipitaci on mes a mes:

B.39 Funciones especiales para gr acas en dos dimensiones.

325

mes = [0 Ene0 ;0 F eb0 ;0 M ar0 ;0 Abr0 ; ... 0 M ay 0 ;0 Jun0 ;0 Jul0 ;0 Ago0 ; ... 0 Sep0 ;0 Oct0 ;0 N ov0 ;0 Dic0 ]; plot (temp, precip,0 wo0 ) axis ([28 80 2.5 5.2]) text (temp, precip, mes) xlabel (0 temp0 ) ylabel (0 precip0 ) title (0 Boston0 )

Boston 5 4.5 precip 4 3.5 3 2.5 Ene Feb Mar Nov Abr Oct May Sep Jun Jul 30 40 50 temp 60 70 80 Ago Dic

Figura B.10 Relaci on entre temperatura y precipitaci on cada mes La declaraci on axis en el ejemplo anterior adiciona espacio extra al gr aco, deniendo expl citamente el escalamiento de los ejes a valores mayores que el rango de datos. Esto permite que el texto permanezca dentro de los l mites del cuadro del gr aco.

326 PROGRAMA MATLAB

B.39

Funciones especiales para gr acas en dos

dimensiones
bar crea una gr aca de barras. compass crea una gr aca de a ngulos y magnitudes de n umeros complejos con echas emanando desde el origen. errorbar crea una gr aca con barras de error. feather crea una gr aca de a ngulos y magnitudes de n umeros complejos con echas emanando desde puntos igualmente espaciados a lo largo de un eje horizontal. fplot evalua una funci on y graca los resultados. hist crea un histograma. polar crea una gr aca en coordenadas polares. quiver crea una gr aca de un gradiente u otro campo vectorial. rose crea un histograma de angulos. stairs crea una gr aca similar a una de barras, pero sin las l neas internas. fill dibuja un pol gono y lo llena con colores s olidos o interpolados. Ejemplo B.27 . Crear la funci on: f unction y = f ofx (x) y = cos (tan (pi x)) ; con el nombre f of x.m. Despu es, dentro del MATLAB correr: f plot (0 fof x0 , [0 1]) para gracar la funci on correspondiente en el intervalo (0, 1) . Esta gr aca se puede comparar con la que se obtiene de la siguiente manera: x = (0 : 1/2000 : 1)0 ; plot (x, cos (tan (pi x))) Los dos gr acos se pueden ver, como se muestra en la Fig. B.11, en la misma ventana as : subplot(2, 1, 1); x = (0 : 1/2000 : 1)0 ; plot (x, cos (tan (pi x)))

B.40 Gr acos en 3 dimensiones. Gr acos de l neas.

327

subplot (2, 1, 2) ; f plot (0 f of x0 , [0 1])

-1 0 1

0.2

0.4

0.6

0.8

-1 0

0.2

0.4

0.6

0.8

Figura B.11 Gr acos del ejemplo B.27 La funci on f plot tiene la ventaja de que muestrea la funci on a intervalos m as cercanos en la regi on en donde la rata de cambio es mayor, generando as una gura m as precisa cerca a x = 0.5 en este caso particular.

B.40

Gr acos en 3 dimensiones. Gr acos de l neas.

El an alogo tridimensional a la funci on plot es plot3. Si x, y, z son 3 vectores de la misma longitud, plot3 (x, y, z ) genera una l nea que pasa a trav es de los puntos cuyas coordenadas son los elementos de x, y, z y luego produce una proyecci on bidimensional de esa l nea en la pantalla. Ejemplo B.28 . t = 0 : pi/50 : 10 pi; plot3 (sin (t) , cos (t) , t) ;

328 PROGRAMA MATLAB produce una gura como la de un resorte. V ease Fig. B.12.

40 30 20 10 0 1 1 0 -1 -1 0

Figura B.12 Figura del ejemplo B.28 Tambi en se pueden usar matrices en lugar de vectores: plot3 (X, Y, Z, S ). Se gracan las lineas obtenidas de las columnas de X, Y, Z . S es lo mismo que en la funci on plot. O tambi en se pueden combinar los gr acos denidos por las cu adruples (x, y, z, s) : plot3 (x1, y 1, z 1, s1, x2, y 2, z 2, s2, ) en donde todas las xi, yi y zi son vectores o matrices y las si cadenas como en la funci on plot.

B.41

Meshgrid

MATLAB dene una supercie en forma de malla mediante las coordenadas z de puntos por encima de una cuadr cula rectangular en el plano x y. La gr aca se forma uniendo puntos adyacentes con l neas rectas. Estas supercies son u tiles para visualizar matrices que son demasiado grandes para mostrar en forma num erica, o para gracar funciones de dos variables. El primer paso para mostrar (en pantalla) una funci on de dos variables, z = f (x, y ) , es generar dos matrices X y Y que consisten de las repetidas y columnas repetidas, respectivamente, sobre el dominio de la funci on. Despu es se usan estas matrices para evaluar y gracar la funci on. La funci on meshgrid transforma el dominio especicado por dos vectores, x y y , en matrices X y Y . Luego se usan estas matrices para evaluar funciones de dos variables. Las las de X son copias del vector x, y las columnas de Y con copias del vector y. Es importante notar que si x tiene m elementos, y tiene n elementos, entonces X es

B.41 Meshgrid. de dimensi on n m y Y tambi en. Ejemplo B.29 .

329

r) que produce la supercie popularmente conocida Considere la funci on sinc (r) = sin( r como el sombrero como se muestra en la Fig. B.13. Se evaluar a esta funci on para el rango de x entre 8 y 8, y y entre 10 y 10. :

x = 8 : 0.5 : 8; y = 10 : 0.5 : 10; [X, Y ] = meshgrid (x, y ) R = sqrt (X.2 + Y.2) + eps; Z = sin (R) ./R; mesh (x, y, Z )

1 0.5 0 -0.5 10 10 0 -10 -10 0

Figura B.13 Supercie del ejemplo B.29 Las funciones contour y contour3 sirven para generar gr acas de contorno (de nivel) en 2 y 3 dimensiones, respectivamente.

330 PROGRAMA MATLAB Ejemplo B.30 . contour (peaks, 20)

contour3 (peaks, 20) Usar el comando help para m as informaci on.

B.42

Pseudocolor en gr acas

pcolor (Z ) muestra en cada punto Z (i, j ) un color. Este se determina de un mapa de colores con un ndice (n umero) obtenido escalando el valor del elemento Z (i, j ) de la matriz Z. El mapa de colores es una matriz con tres columnas que especica la intensidad de las tres componentes de video, rojo, verde y azul. El comando para el mapa de colores es colormap(map), donde map es una matriz con cualquier n umero de las y tres columnas. La intensidad de los colores se puede especicar en el rango 0.0 a 1.0. Ejemplo [0 0 0] es negro y [1 1 1] es blanco. Los objetos gr acos que usan pseudocolor (objetos SURFACE y PATCH), los cuales son creados con las funciones mesh, surf , y pcolor, mapean una matriz de color, C , cuyos valores est an en el rango [Cm n, Cma x], a un arreglo de ndices, K , en el rango [1, m] . Los valores de Cm n y Cma x son min (min (C )) y max (max (C )), o son especicados por caxis. El mapeo es lineal, con Cm n mapeando el ndice 1 y Cma x el ndice m. Los ndices son luego usados con colormap para determinar el color asociado con cada elemento de la matriz. Usar help color para ver mapas de colores ya predenidos, tales como hsv , gray , hot, cool, bone, copper, pink, etc. Ejemplo B.31 . z = peaks ;

colormap (bone)

pcolor (z ) Las funciones contour y pcolor muestran esencialmente la misma informaci on sobre la misma escala. De hecho, a veces es u til superponer las dos. Para eliminar las l neas de la cuadr cula en el gr aco pcolor se debe cambiar el modo shading a f lat. Para usar l neas negras para todos los contornos, especicar 0 k0 para su color.

B.43 Gr acas en malla y supercie. Ejemplo B.32 . colormap (hot) pcolor(peaks) shading f lat hold on contour(peaks, 20,0 k0 ) hold of f

331

El MATLAB tambi en maneja la funci on image que es similar a pcolor. Ambas producen guras bidimensionales con valores de brillo o color proporcionales a los elementos de una matriz dada. Sin embargo, image est a dise nada para mostrar fotograf as, pinturas, etc., mientras pcolor es dise nada para visualizar objetos matem aticos m as abstractos. Usar help para m as informaci on.

B.43

Gr acas en malla y supercie

mesh y surf muestran supercies en tres dimensiones. Si Z es una matriz cuyos elementos Z (i, j ) denen la altura de una supercie sobre una cuadr cula inferior (i, j ), entonces mesh (Z ) genera una vista de la supercie en malla y a colores. Similarmente surf (Z ) genera una vista de la supercie con cuadril ateros en malla de color constante, delineados con l neas negras. La funci on shading permite eliminar las l neas en malla o escoger interpolaci on en el shading . Cuando mesh (Z ) y surf (Z ) se usan con una sola matriz como argumento, este argumento especica tanto la altura como el color de la supercie. Ejemplo B.33 . mesh (peaks) surf (peaks) Con dos matrices como argumentos, las declaraciones mesh (Z, C ) y surf (Z, C ) especican independientemente el color usando el segundo argumento. As como con pcolor (C ), los valores de C se escalan y se utilizan como ndices en el mapa actual de color.

332 PROGRAMA MATLAB Ejemplo B.34 .

= del2 (peaks) ; % funci on que calcula el laplaciano discreto de % cualquier matriz.

surf (peaks, C ) ; % renglones con curvaturas similares se dibujan en el colormap (hot) % mismo color. Se pueden eliminar partes de una supercie con datos tipo NaN , ya que estos no son gracados. Esto crea huecos en la supercie en la localizaci on correspondiente. Llenando elementos de la matriz de color con datos tipo N aN se obtienen regiones de la supercie invisibles. Ejemplo B.35 . p = peaks ; p (30 : 40, 20 : 30) = nan p (30 : 40, 20 : 30) ; mesh (peaks, p) La Fig. B.14 muestra la supercie del ejemplo B.35.

10 5 0 -5 -10 60 40 20 0 0 20 60 40

Figura B.14 Supercie del ejemplo B.25 Usar help sobre las funciones surf c, meshz , surf l para m as informaci on.

B.44 Algunas funciones para gr acos de prop osito general.

333

B.44

Algunas funciones para gr acos de prop osito

general
La funci on view permite especicar el a ngulo desde el cual se ve un gr aco tridimensional. Se debe especicar el azimuth y la elevaci on del punto desde donde se quiere ver, con respecto al origen de los ejes como se muestra en la Fig. B.15. El formato de la funci on es: view(azimuth, elevacio n). Como ejemplo se puede utilizar la matriz peaks para ver su supercie desde varios puntos.

Figura B.15 Convenci on para los angulos azimuth y elevaci on La funci on axis permite seleccionar el escalamiento, orientaci on y relaci on de ejes de los gr acos. Generalmente, el MATLAB encuentra el m aximo y el m nimo de los datos a gracar y escoger una caja apropiada para el gr aco (l mites). Los l mites de los ejes se pueden cambiar as : axis ([xm n xma x ym n yma x zm n zma x]) Para gr acos bidimensionales se omiten los u ltimos dos argumentos. axis (0 auto0 ) retorna al escalamiento por defecto. v = axis guarda el escalamiento de los ejes en el vector v. axis (axis) congela el escalamiento a los l mites actuales. : el origen queda en la axis (0 ij 0 ) cambia el origen del sistema de coordenadas as esquina superior izquierda, el eje i es vertical y se numera de arriba hacia abajo, y el eje j es horizontal y se numera de izquierda a derecha. Estos son llamados ejes matriciales.

334 PROGRAMA MATLAB axis (0 xy 0 ) pone los ejes en el modo caartesiano (por defecto). on ancho-altura del gr aco y la relaci on axis (0 square0 ) y axis (0 equal0 ) afectan la relaci entre las escalas de los ejes x y y. axis manipula el objeto axes, el cual es un objeto gr aco. subplot (m, n, p) divide la ventana de la pantalla para m n subgr acos y escoge el gr aco p como el actual. Los gr acos se numeran a lo largo de la la, luego la segunda, etc. Usar la funci on figure sin argumentos abre una nueva ventana. figure (N ) hace la gura N la gura actual. Usar help para informaci on sobre la funci on moviein, movie. La funci on ginput permite usar el mouse o las teclas de direcci on para escoger puntos en un gr aco. Ella retorna las coordenadas de la posici on del se nalador, ya sea cuando el bot on del mouse o una tecla se presiona. Las cualidades gr acas discutidas hasta ahora comprenden la interfase a alto nivel del sistema gr aco del MATLAB. Sin embargo, este sistema tambi en suministra un conjunto de funciones a bajo nivel que permiten crear y manipular l neas, supercies y otros objetos gr acos que el MATLAB usa para producir gr acos sosticados. Para m as informaci on referirse a la gu a del usuario del MATLAB (p ags 2-101 a 2-123).

B.45

Flujo de control

MATLAB tiene declaraciones de ujo de control como las encontradas en la mayor a de los lenguajes de computador. Esto permite que el MATLAB sea utilizado como un lenguaje de programaci on de alto nivel.

B.46

Lazos f or
f or end v = expresi on declaraciones

La forma general para el lazo f or es:

La expresi on es actualmente una matriz. Las columnas de la matriz se asignan una a una a la variable v y luego son ejecutadas las declaraciones. Una manera m as clara de lograr lo mismo es as : E = expresio n ; [m, n] = size (E ) ; for J = 1 : n v = E (: , J ) ; declaraciones end Usualmente, expresio n es algo como m : i : n, que es una matriz con una sola la,

B.47 Lazos while.

335

y por lo tanto sus columnas son escalares. En este caso especial, el lazo f or de MATLAB es como los lazos F OR o DO de otros lenguajes. Ejemplo B.36 . Gracar la respuesta al escal on unitario de un sistema de segundo orden con frecuencia y relaci o n de amortiguamiento variando desde 0 hasta 1. natural 1 rad seg t = 0 : 0.5 : 19.5; r = 0.05 : 0.05 : 1.0; n = 1; % numerador de la FT f or j = 1 : 1 : 20 d = [1 2 r (j ) 1] ; % denominador de la FT Y (:, j ) = step (n, d, t) ; % respuesta al escal on % unitario end mesh (r, t, Y ) hold on ylabel (0 tiempo0 ) xlabel (0 amortiguamiento0 ) zlabel (0 respuesta0 ) view (60, 30) La Fig. B.16 muestra los resultados del ejemplo B.36.

2 Respuesta 1.5 1 0.5 0 0 0.5 Amortiguamiento 1 0 5 10 Tiempo 15 20

Figura B.16 Resultados del ejemplo B.36

B.47

Lazos while

336 PROGRAMA MATLAB Su forma general es: while expresi on declaraciones end Las declaraciones se ejecutan repetidamente siempre y cuando todos los elementos en la matriz expresio n sean diferentes de cero. La matriz expresi on es casi siempre una expresi on relacional 1 1, en este caso expresio n 6= 0 corrsponde a true (cierto). Cuando la matriz expresio n no es un escalar, se puede reducir usando las funciones any y all. Ejemplo B.37 . Este ejemplo encuentra el primer entero n para el cual n! es un n umero de 100 d gitos. n = 1; while prod (1 : n) < 1.0 e 100 ; n = n + 1; end n

B.48

Declaraciones if y break

Ejemplo B.38 . Se muestra como un c alculo se puede dividir en tres casos, dependiendo del signo y la paridad de n : umero positivo = 0 ); n = input(0 Entre un n % Datos por teclado If n < 0 disp (0 Es negativo 0 ) parid elseif else disp (0 Es impar 0 ) end Debe archivarse como archivo tipo m con el nombre parid.m. Ejemplo B.39 . Se lee un n umero positivo por teclado. Si es par se divide por 2, si es impar se multiplica por 3 y se le suma 1. Se repite el proceso hasta que el entero llega a 1. Existe alg un entero para el cual el proceso no termina?. rem (n, 2) == 0 disp (0 Es par 0 )

B.50 Archivos script.

337

while 1 n = input(0 Entre n > 0.0 ); if n <= 0 break; % Salida de los lazos end; while n > 1 if rem(n, 2) == 0 n = n/2; else end; end; end; n = 3 n + 1;

B.49

Archivos tipo m

MATLAB puede ejecutar secuencias de comandos que son almacenados en un archivo. Los archivos de disco que contienen declaraciones del MATLAB son llamados archivos m porque tienen un tipo de archivo con .m como la u ltima parte del nombre del archivo (la extensi on). Por ejemplo, un archivo llamado bessel.m contiene declaraciones del MATLAB que evaluan las funciones de Bessel. Un archivo m consiste de una secuencia de declaraciones normales del MATLAB, las cuales posiblemente incluyan referenc as a otros archivos m. Un archivo m se puede llamar a si mismo recursivamente y se puede crear usando un editor de texto o un procesador de palabra. Dos tipos de archivos m se pueden usar: los que automatizan secuencias de comandos (archivos script) y las funciones que hacen m as extensible el MATLAB. Gran parte de la potencia del MATLAB consiste en que permite crear nuevas funciones que resuelven problemas espec cos del usuario. Ambos tipos de archivo son ordinariamente archivos de texto ASCII.

B.50

Archivos script

Cuando un archivo de estos es invocado, MATLAB simplemente ejecuta los comandos encontrados en el archivo. Las declaraciones operan globalmente sobre los datos en el espacio de trabajo. Estos archivos son u tiles para desarrollar an alisis, resolver problemas o dise nar largas secuencias de comandos que se vuelven dif ciles de manejar interactivamente. Ejemplo B.40 .

338 PROGRAMA MATLAB El archivo llamado fibno.m contiene los siguientes comandos: % Este es un archivo para calcular % los n umeros de F ibonacci. f = [1 1] ; i = 1; while f (i) + f (i + 1) < 1000 f (i + 2) = f (i) + f (i + 1) i=i+1 end plot (f ) Escribiendo f ibno causa que es el MATLAB ejecute los comandos. Calcula los primeros 16 n umeros de F ibonacci y crea una gr aca. Despu es de que la ejecuci on del archivo est a completa, las variables f e i permanecen en el espacio de trabajo. Los demos del MATLAB son buenos ejemplos de como usar estos archivos para desarrollar tareas m as complicadas. Cuando se invoca el MATLAB, autom aticamente ejecuta un archivo llamado matlabrc.m,el cual corre el archivo startup.m, si este existe, en el cual se pueden entrar constantes f sicas, factores de conversi on, o cualquier otra cosa que se quiera predenir en el espacio de trabajo.

B.51

Archivos funci on

Un archivo m que contiene la palabra function al comienzo de la primera l nea es un archivo funci on. Este diere del script en que se le pueden pasar argumentos, y las variables denidas y manipuladas dentro del archivo son locales a la funci on y no operan globalmente en el espacio de trabajo. Los archivos funci on son u tiles para extender el MATLAB, es decir, crear nuevas funciones del MATLAB utilizando su propio lenguaje. Ejemplo B.41 . El archivo media.m con las siguientes declaraciones es una funci on: function [med, desv ] = media (x) % Retorna el valor medio y la desviaci on est andar de los elementos del vector x. % Retorna un vector la que contiene el valor medio y la desviaci on est andar % de cada columna cuando x es una matriz. [m, n] = size (x) ; if m == 1 m=n; end med = sum (x) /m; desv = sqrt (sum (x.2) /m med.2) ; Se puede utilizar con: z = 1 : 99;

B.53 Comandos echo, input, keyboard, y pause.

339

[me, de] = media (z ) lo cual resulta en: me = 50

de = 28.5774 N otese que: 1) La primera l nea declara el nombre function, los argumentos de entrada x (si es m as de uno, se separan por comas) y los argumentos de salida, med y desv. 2) El s mbolo % indica que el resto de la l nea es un comentario y debe ser ignorada. 3) Las primeras pocas l neas documentan el archivo M y la muestra cuando se escribe help media . 4) Las variables m, n, med y desv son locales a la funci on media y no existen en el espacio de trabajo despu es de que media ha terminado (o si exist an previamente, permanecen sin cambiar). 5) El vector z que conten a los enteros de 1 a 99 fu e pasado o copiado en media en donde llega a ser una variable local llamada x.

B.52

Ayuda en l nea para los archivos m

Se puede crear ayuda en l nea para los archivos m entrando texto en una o m as l neas de comentario, empezando con la segunda l nea del archivo. As cuando se entra help media (ver ejemplo anterior), las l neas 2, 3 y 4 se muestran. Son las primeras l neas contiguas de comentarios. El sistema de ayuda ignora las l neas que aparecen posteriores a cualquier declaraci on ejecutable o a un una l nea en blanco.

B.53

Comandos echo, input, keyboard, y

pause
Normalmente mientras un archivo m se ejecuta, los comandos en el archivo no se muestran en la pantalla. El comando echo hace que los archivos m se vean en la medida que se ejecutan, lo cual es u til para depuraci on o para demostraciones. La funci on input obtiene entrada del usuario. As : n = input (0 Entre un entero0 )

340 PROGRAMA MATLAB muestra el mensaje Entre un entero, espera y luego asigna a n el valor o expresi on entrada por el teclado. La funci on keyboard invoca el teclado del computador como un script. Cuando se usa en archivos m es u til para depuraci on o para modicar variables durante la ejecuci on. El comando pause hace que un procedimiento pare y espere que el usuario presione cualquier tecla antes de continuar. pause (n) pausa durante n segundos antes de continuar.

B.54

Variables globales

Generalmente cada funci on del MATLAB, denida por un archivo m, tiene sus propias variables locales, las cuales son separadas de aquellas de otras funciones, de aquellas del espacio de trabajo y de aquellas de archivos script. Sin embargo, si varias funciones y posiblemente el espacio de trabajo, declaran todas un nombre particular como global, entonces todos comparten una copia u nica de esa variable. Cualquier asignaci on a esa variable, en cualquier funci on, es disponible a todas las otras funciones que la declaran global. El formato es: global Nombrevariable1 Nombrevariable2 ... En las funciones esta declaraci on se puede hacer despu es de las primeras l neas de comentario.

B.55

Cadenas de texto

Las cadenas de texto se entran en MATLAB delimitadas por comillas simples. Por ejemplo: s = 0 Hola0 resulta en: s = Hola El texto se almacena en un vector, un caracter por elemento. En este ejemplo: size (s)

ans = 14 indica que s tiene cuatro elementos. Los caracteres son almacenados como sus valores ASCII y abs muestra estos valores:

B.56 La funci on eval.

341

abs (s)

ans = 72 111 108 97 la funci on setstr permite mostrar el vector como texto en lugar de mostrar los valores ASCII. disp muestra el texto en la variable. Otras funciones u tiles son: isstr la cual detecta caracteres, y strcmp, la cual compara cadenas de caracteres. El uso de corchetes concatena variables de texto en cadenas mas largas: s = [s,0 amigos0 ]

s = Hola amigos Valores num ericos son convertidos a caracteres con sprintf , num2str, int2str. Los valores num ericos son a veces concatenados para poner t tulos en gr acos que incluyen valores num ericos: f = 70; c = (f 32) /1.8; title ([0 la temperatura del cuarto es 0 , num2str (c) , 0 grados C 0 ])

B.56

La funci on ev al

La funci on eval trabaja con variables de texto para implementar una poderosa facilidad al estilo macro. eval (t) hace que el texto contenido en t sea evaluado. Si CADENA es el texto fuente para cualquier expresi on o declaraci on del MATLAB, entonces: t = 0 CADENA0 ; codica el texto en t. Escribir t imprime el texto (en pantalla) y eval (t) hace que el texto sea interpretado, como una declaraci on o como un factor en una expresi on. Ejemplo B.42 .

342 PROGRAMA MATLAB

t = 0 1/ (i + j 1)0 ; f or i = 1 : n f or end end genera la matriz del Hilbert de orden n. Se puede usar eval e input para escoger una de varias tareas denidas en archivos m. Ejemplo B.43 . En este ejemplo los archivos m tienen los nombres : resist.m, induct.m y conden.m. elementos = [0 resist0 ; 0 induct0 ; 0 conden0 ] ; K = input (0 Escoja nu mero de elemento : 0 ) ; j=1:n a (i, j ) = eval (t) ;

eval (elementos (K, :)) N otese que el n umero de columnas en elementos implica que cada la debe tener el mismo n umero de caracteres. Ejemplo B.44 . En este ejemplo se muestra como eval puede usar el comando load para cargar 10 archivos de datos numerados secuencialmente: nombre ar = 0 misdatos0 ; f or i = 1 : 10 eval ([ 0 load 0 , nombre ar, int2str (i)]) end

B.57

Como incrementar velocidad y memoria

Para obtener la m axima velocidad del MATLAB, se debe hacer el esfuerzo de vectorizar los algoritmos en los archivos m. Siempre que sea posible, convertir lazos f or y while a operaciones con vectores o matrices. Ejemplo B.45 . Una manera de obtener el seno de 1001 n umeros desde el 1 hasta 10 es:

B.58 Archivos de entrada y salida.

343

i = 0; for t = 0 : .01 : 10 i = i + 1; y (i) = sin (t) ; end Una versi on con vectores del mismo c odigo es: t = 0 : .01 : 10 ; y = sin (t) ; si no se puede vectorizar un pedazo de c odigo, los lazos f or se pueden acelerar preubicando los vectores en los cuales los resultados son almacenados. Por ejemplo, al incluir la primer declaraci on que usa la funci on zeros, el lazo f or se ejecuta mas r apido en: y = zeros (1, 100) ; for i = 1 : 100 end

y (i) = det X i ;

Si no se preubican vectores, el interpretador del MATLAB debe cambiar el tama no del vector y a un elemento m as grande cada vez en el lazo de iteraci on. Si el vector es prelocalizado, se elimina este paso y ejecuta m as r apido. El esquema de prelocalizaci on tiene un segundo benecio: usa memoria m as ecientemente. Durante una sesi on del MATLAB, la memoria tiende a fragmentarse. Aunque se haya dejado mucha memoria libre, podr a no haber suciente espacio contiguo para sostener una variable grande. As , preubicaci on ayuda a reducir la fragmentaci on.

B.58

Archivos de entrada y salida

Las funciones de archivos de entrada y salida del MATLAB permiten leer datos, directamente en el MATLAB, que han sido guardados en otro formato, o escribir datos generados en el MATLAB en formatos requeridos por otro programa o dispositivo. Las funciones leen y escriben archivos en formato de texto y archivos de datos binario. Estas funciones son basadas en las funciones de archivos de entrada y salida del lenguaje C. Informaci on adicional se puede encontrar en la gu a del usuario del MATLAB.

APENDICE

INTRODUCCION AL SIMULINK

C.1

Introducci on

El SIMULINK es una herramienta del MATLAB que permite simular sistemas tanto lineales como no lineales interactuando con el usuario de una manera gr aca. una vez se est e dentro del MATLAB. Para entrar al programa se escribe simulink Se presenta un pantallazo con varias ventanas (cajas) que contienen los diferentes bloques de simulaci on. Estas ventanas son: sources (fuentes), sinks (sumideros), discrete (discretos), linear (lineales), nonlinear (no lineales), connections (conexiones) y extra (extras).

Sources

Sinks

Discrete

Linear

Nonlinear Connections

Extras

SIMULINK Block Library (Version 1.3c)

Figura C.1 Librer as del Simulink Una sesi on t pica comienza por denir un modelo o traer un modelo ya denido y luego se procede al an alisis del modelo. Los modelos se crean y editan principalmente con comandos manejados por el mouse. Despu es de denir un modelo se puede analizar escogiendo opciones de los men us del SIMULINK o entrando comandos en la ventana de comandos del MATLAB. El progreso de una simulaci on se puede ver mientras est a corriendo, y los resultados nales se pueden hacer disponibles en el a rea de trabajo del MATLAB cuando la simulaci on est a completa.

345

346 INTRODUCCION AL SIMULINK

C.2

Construcci on de un modelo

La denici on de un sistema en el SIMULINK es como la representaci on del sistema en diagramas de bloques, en donde estos son copiados de las librer as de bloques del SIMULINK (las anteriores ventanas) o las que se contruyan. La librer a est andar se organiza en varios subsistemas, agrupando bloques de acuerdo a su comportamiento, por ejemplo sources contiene bloques para generar se nales. Se pueden abrir presionando dos veces el bot on izquierdo (doble click) del mouse. Los bloques que all se presentan se pueden copiar donde se desee, por ejemplo en el modelo que se est e creando, se nalizandolos con el bot on izquierdo del mouse y arrastr andolo (sin soltar el bot on). Un sistema nuevo se puede abrir seleccionando new del men u file, a lo cual aparece una ventana vac a. La mayor a de los bloques se pueden abrir para mostrar sus par ametros en ventanas separadas. Estas permiten controlar el comportamiento del bloque modicando los valores de sus par ametros. Por ejemplo, el bloque signal generator (generador de se nales) del subsistema sources tiene como par ametros la forma de onda, amplitud y frecuencia. Otro bloque importante del subsistema sources es el denominado from workspace (del espacio de trabajo) el cual sirve para recibir en el SIMULINK cualquier se nal o se nales que se deseen del MATLAB en una matriz cuya primer columna tiene los instantes de tiempo y las dem as columnas las se nales correspondientes.
Signal Source Library 12:34 Clock Digital Clock 1 Constant Repeating Sequence

Signal Generator Sine Wave untitled.mat From File

Step Input [T,U]

Pulse Generator

From Workspace Chirp Signal

Random Number

Band-Limited White Noise

Figura C.2 Librer a de sources El subsistema sinks contiene bloques que en general son utilizados como salidas:

C.2 Construcci on de un modelo

347

osciloscopios (scope) gracadores (graph) y un bloque llamado to workspace (al espacio de trabajo) el cual sirve para mandar las se nales (respuestas, por ejemplo) que se deseen de la simulaci on al espacio de trabajo en una matriz, en donde cada columna corresponde a cada respuesta o salida, y las las al ndice de cada instante de simulaci on. Para enviar el vector que contiene los intantes de tiempo al MATLAB, se puede usar el bloque clock del subsistema sources conectado al bloque to workspace.

Signal Sinks Library yout To Workspace Scope untitled.mat Graph To File

STOP Auto-Scale Stop Simulation Graph

XY Graph

Hit Crossing

Figura C.3 Librer a de sinks En general, los bloques tienen entradas (en el bloque se representa con > apuntando hacia el mismo) y salidas (se presenta con > saliendo del bloque). Para conectar la salida de un bloque a la entrada de otro, se presiona el bot on izquierdo del mouse en cualquiera de los terminales anteriores y se arrastra hacia el otro. Al conectarsen se dibuja una linea que los une, los > desaparecen y una echa en la linea indica la direcci on del ujo de datos. Si se quiere borrar o editar una linea se selecciona con el mouse en cualquier lugar de ella. Todos los vertices son se nalados con peque nos cuadrados s olidos. Una vez que la l nea es seleccionada se puede eliminar del modelo presionando la tecla delete. La simulaci on de un sistema f sico en el SIMULINK depende del modelo matem atico que se tenga. Por ejemplo, un sistema lineal descrito mediante una funci on de transferencia se puede simular usando el bloque transf er f cn del subsistema linear. Tambi en se puede usar el bloque state space de la misma librer a, cuando el modelo es dado mediante las ecuaciones de estado y de salida. O si se tiene un conjunto de ecuaciones que describe el comportamiento del sistema se pueden simular usando todos los bloques disponibles tanto en al librer a linear (integradores, sumadores, ganancias, derivadores, etc.) como en la nonlinear (saturaci on, rel es, productos, funciones de variables, valor absoluto, zona muerta, etc.).

348 INTRODUCCION AL SIMULINK


Nonlinear Library

Linear Library + + Sum 1/s Integrator 1 Gain 1 s+1 Transfer Fcn K Matrix Gain . Inner Product du/dt Derivative 1.317 Slider Gain (s-1) s(s+1) Zero-Pole
Sign Relay Backlash Saturation

Quantizer * Product >= Relational Operator f(u) Fcn

Dead Zone Coulombic Rate Limiter Friction Abs Abs AND Logical Combinatorial Operator Logic system S-Function MATLAB Function MATLAB Fcn Switch 1/s Reset Integrator 1/s Look-Up Table 2-D Look-Up Table

x' = Ax+Bu y = Cx+Du State-Space

Memory

Transport Limited Variable Delay Transport Delay Integrator

a) Linear

b) Nonlinear

Figura C.4 Subsistemas linear y nonlinear del Simulink Cuando se tienen varias se nales que se quieren ver en una misma gr aca por ejemplo, se puede usar un bloque mux que est a en la librer a connections el cual sirve para multiplexar sus entradas en un u nico vector a la salida. Tambi en est a en la misma librer a el bloque demux el cual separa un vector con varias se nales en se nales escalares (demultiplexa). Otros dos bloques de esta librer a son: inport, el cual suministra un enlace a una entrada externa y para linealizaci on; tambi en tiene el outport, que suministra un enlace a una salida externa y sirve tambi en para linealizaci on.
Connections Library 1 Inport 1 Outport Mux Mux Demux Demux

Figura C.5 Librer a de connections Si el sistema que se quiere simular es digital, se pueden usar los bloques de la librer a discrete: unit delay (retardo unitario), discrete transfer fcn (funci on de

C.3 Inicio de una simulaci on

349

tranferencia discreta), discrete state space (ecuaciones estado y de salida discretas), etc. Cada uno de los bloques discretos tiene un muestrador interno a su entrada y un retenedor de orden cero en su salida. Cuando bloques discretos se mezclan con bloques an alogos (continuos), la salida entre tiempos de muestreo de los bloques discretos es mantenida constante. Las entradas a los bloques discretos son actualizadas u nicamente en los instantes de muestreo. El tiempo de muestreo se da en el campo del tiempo de muestreo de la caja de di alogo del bloque.

Discrete-Time Library 1/z Unit Delay 1 1+2z -1 Filter (z-1) z(z-0.5) Discrete Zero-Pole 1 z+0.5 Discrete Transfer Fcn

x(n+1)=Ax(n)+Bu(n) y(n)=Cx(n)+Du(n) Discrete State-Space

Zero-Order Hold 1

First-Order Hold

z-1 Discrete-Time Discrete-Time Integrator Limited Integrator

Figura C.6 Librer a de discrete

C.3

Inicio de una simulaci on

Una simulaci on puede ser iniciada desde la l nea de comandos del MATLAB o del men u del SIMULINK: simulation. Todos los m etodos usan los mismos argumentos y par ametros. A. Simulaci on desde el men u simulation. La simulaci on se puede arrancar seleccionando start del men u simulation. Los par ametros de la simulaci on se pueden ajustar seleccionando parameters en el men u simulation. En los campos que all aparecen se pueden entrar n umeros o expresiones legales del MATLAB, por ejemplo, las variables tini, tf in, pasomin, pasomax y tol las cuales se pueden denir en el espacio de trabajo del MATLAB. V ease Fig. C.7.

350 INTRODUCCION AL SIMULINK

Figura C.7 Panel de control del Simulink Las variables de retorno [t, x, y] son usadas para poner el tiempo, las trayectorias del estado y de la salida en el espacio de trabajo del MATLAB. Los tiempos de inicio y de parada de la simulaci on son ajustados en las variables tini y tf in. Los par ametros de integraci on tol, pasomin y pasomax controlan el error local relativo, el m nimo y m aximo intervalos de integraci on de la simulaci on. Correr una simulaci on desde el men u permite desarrollar ciertas operaciones interactivamente durante una simulaci on: a) Cambiar los par ametros de un bloque, siempre y cuando no cause un cambio en el n umero de estados, entradas o salidas para ese bloque. b) Cambiar cualquiera de los par ametros de simulaci on, excepto las variables de retorno y el tiempo de inicio. c) Cambiar el algoritmo de simulaci on. d) Cambiar el tiempo de muestreo para bloques discretos. e) Simular otro sistema al mismo tiempo. f) Seleccionar una l nea para ver su salida en un osciloscopio otante, el cual consiste de un bloque scope desconectado. Este muestra la salida de cualquier l nea que se seleccione. B. Simulaci on desde la l nea de comandos del MATLAB. Cualquier simulaci on que se corra desde el men u tambi en se puede correr desde la l nea de comandos. Por ejemplo, para congurar una simulaci on con par ametros id enticos a los descritos en el ejemplo anterior y mostrados en la Fig C.7, se debe usar el comando:

[t, x, y ] = linsim(0 modelo0 , [tini, tf in] , ...

C.3 Inicio de una simulaci on xo, [tol, pasomin, pasomax]);

351

en donde modelo es el nombre del diagrama del sistema y linsim es una de las t ecnicas de integraci on. Las condiciones iniciales, que no se pueden ajustar desde el men u de simulation, se denen en el vector xo. Estas condiciones iniciales prevalecen sobre las condiciones iniciales ajustadas en los bloques, a menos que xo sea una matriz vac a. La simulaci on desde la l nea de comandos tiene las siguientes ventajas: a) Se puede denir las condiciones iniciales, las cuales prevalecen sobre las denidas en los bloques. b) Si no se especican los argumentos del lado izquierdo del comando de simulaci on, autom aticamente se gracan las salidas o, cuando no hay salidas, las trayectorias del estado. c) Entradas externas se pueden especicar usando una variable extra ut, la cual va al nal de los par ametros del comando de simulaci on. ut puede ser una cadena de caracteres o una tabla de valores. Por ejemplo ut = 0 sin0 o ut = 0 ones (2, 1) sin (3 t + 2)0 . Si es una tabla, la primer columna debe ser un vector con los tiempos en orden ascendente. d) Una simulaci on se puede correr desde un archivo M permitiendo que par ametros en los bloques sean cambiados interactivamente. e) Para peque nos modelos, la simulaci on se ejecuta m as r apido. Todos los algoritmos de integraci on tienen id entica sintaxis de modo que los diferentes m etodos se pueden seleccionar simplemente cambiando el nombre de la funci on: euler, rk23, rk45, linsim, adams y gear. La velocidad y precisi on con las cuales se pueden resolver las ecuaciones diferenciales no s olo dependen de los par ametros del intervalo de integraci on y el error relativo si no tambi en del algoritmo que se escoja. Estas rutinas se pueden usar para una variedad de problemas: linsim usa un m etodo que extrae la din amica lineal de un sistema dejando u nicamente la din amica no lineal del sistema para ser simulado. Este m etodo trabaja muy bien cuando el sistema a ser simulado es relativamente lineal, y se pueden tomar intervalos grandes de integraci on. Por esto es necesario limitar el m aximo intervalo de integraci on si se quieren puntos de salida razonablemente espaciados. El m etodo de euler es un m etodo de intervalo u nico el cual simplemente multiplica las derivadas por el tama no del intervalo para producir la actualizaci on del estado. Se incluye por razones hist oricas. Se deben tomar intervalos de integraci on mucho m as peque nos que los de los otros m etodos para lograr la misma precisi on y, por esto, no se recomienda para la mayor a de problemas. Los m etodos de Runge-Kutta, rk23 y rk45, son m etodos buenos de prop osito general que trabajan bien para un buen rango de problemas. Aunque rk45 es generalmente m as r apido y preciso que rk23, produce menos puntos de salida; por eso rk23 podr a ser preferido para gr acas suaves. Son los mejores m etodos cuando el sistema a ser simulado tiene discontinuidades. adams y gear son m etodos predictores-correctores que trabajan bien con problemas en donde las trayectorias de estado son suaves. El m etodo de gear es fundamentalmente para sistemas con mezcla de din amicas r apida

352 INTRODUCCION AL SIMULINK y lenta. Estos m etodos no trabajan bien cuando el sistema es discontinuo. Todos los m etodos son de intervalo de integraci on variable, el cual se ajusta continuamente de modo que se mantenga el error relativo. Los m etodos, excepto gear y adams, se pueden convertir a m etodos de intervalo jo haciendo que los intervalos m nimo y m aximo sean iguales. linsim y euler son m etodos de intervalo u nico: un nuevo punto de salida se genera a cada intervalo de tiempo. rk23 y rk45 son m etodos de Runge-Kutta que toman intervalos intermedios entre los puntos generados por las trayectorias de salida. Las rutinas de adams y gear son m etodos predictores-correctores los cuales toman un n umero variable de puntos para generar un punto de salida. Todos los algoritmos de integraci on (excepto euler) podr an tomar pasos hacia atr as en el tiempo cuando el error de predici on calculado es mayor que el error relativo. En este caso el intervalo de integraci on es reducido pero nunca por debajo del intervalo m nimo; por eso, es posible producir resultados imprecisos si cualquiera, el error relativo o el m nimo intervalo de integraci on, son demasiado grandes. Sistemas puramente discretos se pueden simular usando cualquiera de los m etodos de integraci on; no hay diferencia en las soluciones. Para lograr puntos de salida que reejen u nicamente los instantes de muestreo, se debe ajustar el m nimo intervalo de integraci on a un valor mayor que el m aximo tiempo de muestreo. Ejemplo C.1 . Este ejemplo sirve para simular el control por realimentaci on de variables de estado de la planta constituida por el p endulo invertido considerado en el Cap tulo 1, cuya descripci on matem atica es dada por las ecuaciones (1.16) y (1.17). Referirse tambi en al art culo de los autores Frecuencias escondidas en sistemas lineales, en la revista Scientia et Technica, No. 5 de Abril de 1997. Si se denen las variables de estado como: , x3 = y, x4 = y x1 = , x2 = entonces el modelo matem atico mediante x 1 0 1 0 x 2 = a21 0 0 x 3 0 0 0 x 4 a41 0 0 variables de estado es: x1 0 0 0 x2 + b2 u 1 x3 0 0 x4 b4

en donde:

a21 b2

(m + M )mgL (mL)2 g , a41 = , d d mL I + mL2 , b4 = , d = (m + M )I + mML2 = d d =

La Fig. C.8 muestra el diagrama del Simulink para el control del p endulo invertido, el cual es archivado con el nombre sipend.

C.3 Inicio de una simulaci on

353

Reloj

ti Tiempo u Seal de Control x' = Ax+Bu x y = Cx+Du Vector de Estado Pndulo Invertido K Ganancias de Realimentacin

Figura C.8 Diagrama del Simulink para el control del p endulo invertido N otese de la Fig. C.8 que: 1) La planta se simula con el bloque state space, ya que su modelo matem atico es dado mediante ecuaciones de estado y de salida. 2) La realimentaci on de las variables de estado se hace a trav es del bloque matrix gain de la librer a linear. 3) Las variables que se quieren observar (control y estado) se env an al espacio de trabajo en un bloque to workspace ( Vector de Estado) para ser gracados con un archivo tipo m o un programa que usa comandos del MATLAB que se muestra m as adelante. Los instantes de simulaci on, contenidos en el bloque clock, tambi en son enviados al espacio de trabajo para ser usados en las gr acas de los resultados. El programa que maneja la simulaci on, pide las ganancias por las cuales se deben multiplicar las variables de estado, calcula las matrices A y B y graca los resultados es el siguiente: % PENDULO INVERTIDO % Se piden las ganancias de realimentaci on k1=input(Ganancia de realimentaci on para x1, k1 = ) k2=input(Ganancia de realimentaci on para x2, k2 = ) k3=input(Ganancia de realimentaci on para x3, k3 = ) k4=input(Ganancia de realimentaci on para x4, k4 = ) % Par ametros del p endulo invertido m=0.05;M=0.5;g=9.8;L=1; I=m*L2/3;delta=(m+M)*I+m*M*L2; % Se calculan las matrices A y B

354 INTRODUCCION AL SIMULINK A=[0 1 0 0;(m+M)*m*g*L/delta 0 0 0;0 0 0 1;-(m*L) 2*g/delta 0 0 0]; B=[0;-m*L/delta;0;(I+m*L 2)/delta]; % Vector de ganancias del controlador k=[-k1 -k2 -k3 -k4]; % Se simula el sistema en lazo cerrado. % Todas las condiciones iniciales son nulas, excepto el a ngulo inicial % del p endulo que es 10 grados linsim(sipend,[0,10],[pi/18;0;0;0],[0.001,0.01,0.01]) % Se graca la posici on angular del p endulo gure(1) plot(ti,x(:,1)*180/pi,w-) ylabel(pos. angular del p endulo, grados);xlabel(segs.) grid on % Se graca el desplazamiento del carro gure(2) plot(ti,x(:,3),w-) ylabel(desplazamiento del carro, metros);xlabel(segs.) grid on % Se graca la fuerza de control gure(3) plot(ti,u,w-) ylabel(fuerza de control, Newtons);xlabel(segs.) grid on Los resultados del control con k1 = 65, k2 = 24, k3 = k4 = 0, es decir sin realimentar yyy se muestran en las Figuras C.9 y C.10. N otese que aunque la posici on angular es controlada, el desplazamiento del carro es inestable.

10 pos. angular del pndulo, grados 8 6

4 2 0 0

4 segs.

10

Figura C.9 Posici on angular del p endulo

C.3 Inicio de una simulaci on

355

7 desplazamiento del carro, metros 6 5 4 3 2 1 0 0 2 4 segs. 6 8 10

Figura C.10 Desplazamiento del carro Los resultados del control realimentando todas las variables de estado con k1 = 65, k2 = 24, k3 = 8, k4 = 11, se muestran en las Figuras C.11 y C.12. N otese que ahora la posici on angular y el desplazamiento del carro est an completamente controlados.

10 pos. angular del pndulo, grados 8 6 4 2 0 -2 -4 -6 0 2 4 segs. 6 8 10

Figura C.11 Posici on angular del p endulo

356 INTRODUCCION AL SIMULINK

0.5 desplazamiento del carro, metros 0.4 0.3

0.2 0.1 0 0

4 segs.

10

Figura C.12 Desplazamiento del carro Ejemplo C.2 . Este ejemplo sirve para simular el control optimo usando realimentaci on de las variables de estado estimadas de una planta (motor DC y su drive) por medio de un observador asint otico (V ease Cap tulo 9). Referirse al art culo de los autores Dise no de un controlador optimo que utiliza un observador asint otico para realimentar las variables de estado estimadas, en la revista Scientia et Technica, No. 4 de Octubre de 1996. El criterio de optimizaci on consiste en minimizar el ndice cuadr atico: Z [xt Qx + ut Ru]dt J=
0

para lo cual se utiliza la funci on lqr (linear quadratic regulator) de la herramienta Control del MATLAB. Las matrices ponderantes Q y R que restringen respectivamente, las variables de estado y de control, se escogen como: 1 0 .01 0 0 .1 .01 0 Q= .01 .01 .01 .01 0 0 .01 100 R = .01 Puesto que se introduce un integrador con el n de eliminar el error de estado estacionario, la planta es de cuarto orden y su modelo matem atico mediante ecuaciones de estado es descrito por las matrices:

C.3 Inicio de una simulaci on

357

.1653 .2879 0 11.55 3.414 .9177 A2 = 0 0 12.3 1 0 0

0 0 0 0

Puesto que el observador es reducido, ya que no es necesario estimar la salida del integrador porque se tiene acceso a ella, en la determinaci on de las ganancias del observador se utilizan: la traspuesta de la matriz A1 que se obtiene eliminando en A2 la cuarta la y la cuarta columna, y la traspuesta de [1 0 0] que se obtiene de C2 eliminando la cuarta columna.

0 0 B2 = 147.5 , C2 = 1 0 0 0 0

Seal de control u estadore x' = Ax+Bu Demux y = Cx+Du Al espacio de SaturacinModelo del Demux2 trabajo3 motor Salida y Error de x' = Ax+Bu Mux x4 control 1/s y = Cx+Du + I1 S2 Referencia Ganancias deMux1 realimentacin ti Vector de estado Reloj Al espacio de estimado trabajo2 + x' = Ax+Bu Mux S1 y = Cx+Du Demux Error del Mux2 Observador Demux1 observador asinttico Mux estado espacio de Mux Altrabajo1

Figura C.13 Diagrama de simulaci on del ejemplo C.2 La Fig. C.13 muestra el diagrama de simulaci on del sistema total. N otese que el bloque state space es usado 3 veces para: simular la planta, el observador asint otico y las ganancias de realimentaci on. Se usan multiplexores para reunir varias se nales en un s olo vector, y demultiplexores para separar las se nales de vectores. Se usan los bloques to workspace para enviar varias se nales y el tiempo al espacio de trabajo con el n de gracar algunas variables.

358 INTRODUCCION AL SIMULINK Otros bloques utilizados son: saturation de la librer a nonlinear, un sumador y un integrador de la librer a linear y el bloque step de la librer a sources para generar la se nal de referencia: un escal on de amplitud 8.15 voltios. El siguiente es el programa que carga las matrices Q, R, A2 , B2 y C2 , utiliza de la herramienta Control las funciones lqr que se usa para optimizar y ac ker que sirve para hallar tanto las ganancias de realimentaci on de las variables de estado como las ganancias del observador asint otico cuando los polos respectivos son dados. Usa el m etodo de integraci on rk45 y graca los resultados. % CALCULO OPTIMO DE LAS GANANCIAS DE REALIMENTACION % POR VARIABLES DE ESTADO PARA EL MODELO DEL MOTOR % SE CARGAN Q Y R OPTIMOS load qroptim % SE CARGA PRIMERO EL MODELO DEL MOTOR load modmotor K1, % SE CALCULAN LAS GANANCIAS DE REALIMENTACION % USANDO EL REGULADOR LINEAL CUADRATICO [K1,S,E]=lqr(A2,B2,Q,R); K1 % SE CALCULAN LAS GANANCIAS DEL OBSERVADOR ASINTOTICO L % UTILIZANDO LA FORMULA DE ACKERMAN. EN EL VECTOR Po. % SUS POLOS ESTAN Po=[-10;-20;-30]; L1=acker(A1,[1;0;0],Po); L=L1 % SE SIMULA EL SISTEMA EN LAZO CERRADO CON EL SIMULINK. % EL PROGRAMA SE LLAMA lqrnue33. rk45(lqrnue33,[0,4],[],[0.001,0.01,0.01]) % SE GRAFICAN LAS VARIABLES DE ESTADO ESTIMADAS, LAS REALES, % LA SENAL DE CONTROL Y EL ERROR DEL OBSERVADOR. for j=1:3 gure(j) plot(ti,estado(:,j),w-) hold on plot(ti,estadore(:,j),w-) grid on hold o xlabel(segs.) pause end for j=4:5 gure(j) plot(ti,estado(:,j),w-) grid on xlabel(segs.) pause end

C.3 Inicio de una simulaci on


10 8 6

359

4 2 0

2 segs.

Figura C.14 Variables de estado x1 y xo1

80 60 40

20 0 -20

2 segs.

Figura C.15 Variables de estado x2 y xo2

150 100 50 0 -50 -100 0

2 segs.

Figura C.16 Variables de estado x3 y xo3

360 INTRODUCCION AL SIMULINK


10 8 6

4 2 0 0

2 segs.

Figura C.17 Se nal de control u

5 4 3 2 1 0 -1 0

2 segs.

Figura C.18 Error del observador En las Figuras C.14 a la C.18 se muestran las variables de estado estimadas comparadas con las reales, la se nal de control y el error del observador. N otese como a pesar de que el estado energ etico inicial de la planta [4.075 2.5 60] es totalmente diferente del estado inicial del observador [0 0 0], en menos de medio segundo las variables de estado estimadas convergen asint oticamente a las reales y la salida del sistema, x1 , alcanza el estado estacionario en aproximadamente 3.5 segundos, haciendo seguimiento perfecto de la se nal de referencia, que en este caso es de 8.15 voltios.

You might also like