Presentacion Matlab
Presentacion Matlab
Presentacion Matlab
CURSO INTRODUCTORIO
Que es MATLAB? MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados clculos matemticos y la visualizacin grfica de los mismos.
El nombre MATLAB viene de "Matrix Laboratory" (Laboratorio Matricial). Fue originalmente escrito para proveer acceso fcil al software matricial desarrollado por los proyectos LINPACK y EISPACK, que juntos representan al mayor fabricante de software para computacin matricial.
Programas de apoyo especializado que extienden significativamente el nmero de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prcticamente casi todas las reas principales en el mundo de la ingeniera y la simulacin
proceso de imgenes, seal, control robusto, control de procesos, estadtica, anlisis financiero, matemticas simblicas, redes neurales, lgica difusa, identificacin de sistemas, simulacin de sistemas dinmicos, etc.
MATLAB se puede arrancar como cualquier otra aplicacin de Windows 95/98/NT, clicando dos veces en el icono correspondiente en el escritorio o por medio del men inicio. En la ventana inicial se sugieren ya algunos comandos para el usuario inexperto que quiere echar un vistazo a la aplicacin. En dicha ventana aparece tambin el prompt (aviso) caracterstico de MATLAB ().
Para borrar todas las salidas anteriores de MATLAB y dejar limpia la ventana principal se pueden utilizar las funciones clc y home. La funcin clc (clear console) elimina todas las salidas anteriores, mientras que home las mantiene, pero lleva el prompt ( ) a la primera lnea de la ventana. Si se desea salir del programa, basta teclear los comandos quit o exit, o bien elegir Exit MATLAB en el men File (tambin se puede utilizar el Alt+F4 de todas las aplicaciones de Windows).
clf borra la figura actual y por tanto despeja la ventana de grficos. clear no afecta a las ventanas, pero si borra todas las variables de la memoria Para ver algunas de las capacidades de MATLAB, usar el comando demo, que inicia el MATLAB EXPO, un entorno grfico de demostracin que ilustra algunos tipos de operaciones que se pueden realizar con MATLAB. Para abortar un comando en MATLAB, mantener presionada la tecla de control y oprima c (Ctrl. + c). Esto ocasiona un interrupcin local dentro del MATLAB. Para acceder al men de ayuda se debe usar el comando help.
MATLAB es fundamentalmente un programa para clculo matricial. Inicialmente se utilizar MATLAB como programa interactivo, en el que se irn definiendo las matrices, los vectores y las expresiones que los combinan y obteniendo los resultados sobre la marcha. Si estos resultados son asignados a otras variables podrn ser utilizados posteriormente en otras expresiones. En este sentido MATLAB sera como una potente calculadora matricial
Antes de tratar de hacer clculos complicados, la primera tarea ser aprender a introducir matrices y vectores desde el teclado. Ms adelante se vern otras formas ms potentes de definir matrices y vectores.
DEFINICIN DE MATRICES DESDE TECLADO Para definir una matriz no hace falta establecer de antemano su tamao Las matrices se definen por filas; los elementos de una misma fila estn separados por blancos o comas, mientras que las filas estn separadas por pulsaciones intro o por caracteres punto y coma (;).
A partir de este momento la matriz A est disponible para hacer cualquier tipo de operacin con ella (adems de valores numricos, en la definicin de una matriz o vector se pueden utilizar expresiones y funciones matemticas). Por ejemplo, una sencilla operacin con A es hallar su matriz traspuesta. En MATLAB el apstrofo (') es el smbolo de trasposicin matricial. Para calcular A' (traspuesta de A) basta teclear lo siguiente (se aade a continuacin la respuesta del programa): A' ans = 147 258 369
La variable ans puede ser utilizada como operando en la siguiente expresin que se introduzca. Tambin podra haberse asignado el resultado a otra matriz llamada B:
B=A' B= 1 4 2 5 3 6
7 8 9
Ahora ya estn definidas las matrices A y B, y es posible seguir operando con ellas. Por ejemplo, se puede hacer el producto B*A (deber resultar una matriz simtrica):
90 108 126
En MATLAB se accede a los elementos de un vector poniendo el ndice entre parntesis (por ejemplo x(3) x(i)). Los elementos de las matrices se acceden poniendo los dos ndices entre parntesis, separados por una coma (por ejemplo A(1,2) A(i,j)). teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con un slo subndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4).
A=[1 4 -3; 2 1 5; -2 5 3] A= 1 4 -3 2 1 5 -2 5 3 B=inv(A) B= 0.1803 0.2213 -0.1885 0.1311 0.0246 0.0902 -0.0984 0.1066 0.0574
Para comprobar que este resultado es correcto basta pre-multiplicar A por B; B*A ans = 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 x=[10 20 30] % vector fila x= 10 20 30
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna. Por ejemplo, si se intenta sumar los vectores x e y se obtendr el siguiente mensaje de error: x+y ??? Error using ==> + Matrix dimensions must agree. Estas dificultades desaparecen si se suma x con el vector traspuesto de y: x+y' ans = 21 32 43
OPERACIONES CON MATRICES: MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), as como la funcin invertir inv(). Los operadores matriciales de MATLAB son los siguientes:
Los operadores anteriores se pueden aplicar tambin de modo mixto, es decir con un operando escalar y otro matricial. En este caso la operacin con el escalar se aplica a cada uno de los elementos de la matriz. Considrese el siguiente ejemplo: A=[1 2; 3 4] A= 12 34 A*2 ans = 24 68 A-4 ans = -3 -2 -1 0
En MATLAB existe tambin la posibilidad de aplicar elemento a elemento los operadores matriciales (*, ^, \ y /). Para ello basta precederlos por un punto (.). Por ejemplo: [1 2 3 4]^2 ??? Error using ==> ^ Matrix must be square. [1 2 3 4].^2 ans = 1 4 9 16 [1 2 3 4]*[1 -1 1 -1] ??? Error using ==> * Inner matrix dimensions must agree. [1 2 3 4].*[1 -1 1 -1] ans = 1 -2 3 -4
rand(n,m) - matriz n*m de entradas aleatorias entre 0 y uno. eye(n) - matriz identidad n*n. zeros(n,m) - matriz cero de tamao n*m. ones(n,m) - matriz n*m con todas las entradas uno. Combinando estas instrucciones podemos generar matrices bastante complicadas. Por ejemplo, la instruccin
E=[eye(2),ones(2,3);zeros(2),[1:3;3:-1:1]] genera la siguiente matris
La instruccin round(x) redondea "x" al entero ms cercano a "x". Podemos combinar funciones en MATLAB. Por ejemplo, round(10*rand(4)) genera una matriz con entradas aleatorias entre 0 y 10.
Funciones de Matrices
MATLAB posee una gran cantidad de funciones matriciales. De las ms comunes tenemos:
min(A), max(A) - dan el mnimo y mximo respectivamente por columnas de A sum(A), prod(A) - producen la suma y producto respectivamente por columnas de A norm(A,p) - norma p de la matriz A donde p=1,2, inf eig(A) - vector cuyos componentes son los valores propios de A det(A) - el determinante de A inv(A) - la matriz inversa de A
TIPOS DE DATOS Ya se ha dicho que MATLAB es un programa preparado para trabajar con vectores y matrices. Como caso particular tambin trabaja con variables escalares (matrices de dimensin 1). MATLAB trabaja siempre en doble precisin, es decir guardando cada dato en 8 bytes, con unas 15 cifras decimales exactas. Ya se ver ms adelante que tambin puede trabajar con cadenas de caracteres (strings) y, desde la versin 5.0, tambin con otros tipos de datos: Matrices de ms dos dimensiones, matrices dispersas, vectores y matrices de celdas, estructuras y clases y objetos.
NMEROS REALES DE DOBLE PRECISIN Los elementos constitutivos de vectores y matrices son nmeros reales almacenados en 8 bytes (53 bits para la mantisa y 11 para el exponente de 2; entre 15 y 16 cifras decimales equivalentes). Es importante saber cmo trabaja MATLAB con estos nmeros y los casos especiales que presentan. MATLAB mantiene una forma especial para los nmeros muy grandes (ms grandes que los que es capaz de representar), que son considerados como infinito. Por ejemplo, obsrvese cmo responde el programa al ejecutar el siguiente comando: 1.0/0.0 Warning: Divide by zero ans = Inf
MATLAB tiene tambin una representacin especial para los resultados que no estn definidos como nmeros. Por ejemplo, ejectense los siguientes comandos y obsrvense las respuestas obtenidas: 0/0 Warning: Divide by zero ans = NaN inf/inf ans = NaN
En ambos casos la respuesta es NaN, que es la abreviatura de Not a Number.
A = [1+2i 2+3i; -1+i 2-3i] A= 1.0000 + 2.0000i 2.0000 + 3.0000i -1.0000 + 1.0000i 2.0000 - 3.0000i A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesario A= 1.0000 + 2.0000i 2.0000 + 3.0000i -1.0000 + 1.0000i 2.0000 - 3.0000i
MATLAB dispone asimismo de la funcin complex, que crea un nmero complejo a partir de dos argumentos que representan la parte real e imaginaria, como en el ejemplo siguiente: complex(1,2) ans = 1.0000 + 2.0000i Es importante advertir que el operador de matriz traspuesta ('), aplicado a matrices complejas, produce la matriz conjugada y traspuesta. Existe una funcin que permite hallar simplemente la matriz conjugada (conj()) y el operador punto y apstrofo (.') que calcula simplemente la matriz traspuesta.
CADENAS DE CARACTERES
MATLAB puede definir variables que contengan cadenas de caracteres. En MATLAB las cadenas de texto van entre apstrofos o comillas simples
s = 'cadena de caracteres
MATLAB distingue entre maysculas y minsculas en los nombres de variables. Los nombres de variables deben empezar siempre por una letra y pueden constar de hasta 31 letras y nmeros. El carcter guin bajo (_) se considera como una letra.
FUNCIONES MATEMTICAS ELEMENTALES QUE OPERAN DE MODO ESCALAR Estas funciones, que comprenden las funciones matemticas trascendentales y otras funciones bsicas, actan sobre cada elemento de la matriz como si se tratase de un escalar. Se aplican de la misma forma a escalares, vectores y matrices. Algunas de las funciones de este grupo son las siguientes:
. FUNCIONES QUE ACTAN SOBRE VECTORES Las siguientes funciones actan sobre vectores (no sobre matrices ni sobre escalares)
4 2 X -8X +6X-10=0
se puede representar mediante el vector
MATLAB puede realizar diversas operaciones sobre l, como por ejemplo evaluarlo para un determinado valor de x (funcin polyval()) y calcular las races (funcin roots()): pol=[1 0 -8 6 -10] pol = 1 0 -8 6 -10 roots(pol) ans = -3.2800 2.6748 0.3026 + 1.0238i 0.3026 - 1.0238i polyval(pol,1) ans = -11
Para calcular producto de polinomios MATLAB utiliza una funcin llamada conv() (de producto de convolucin). En el siguiente ejemplo se va a ver cmo se multiplica un polinomio de segundo grado por otro de tercer grado: pol1=[1 -2 4] pol1 = 1 -2 4 pol2=[1 0 3 -4] pol2 = 1 0 3 -4 pol3=conv(pol1,pol2) pol3 = 1 -2 7 -10 20 -16
Para dividir polinomios existe otra funcin llamada deconv().
GRAFICAS MATLAB provee excelentes funciones para grficas en dos y tres dimensiones. Veamos un par de ejemplos sencillos. Suponga que queremos trazar la grfica de la funcin
Supongamos ahora que queremos dibujar la superficie: Esto lo hacemos con la secuencia de instrucciones:
x=-5:.4:5; y=x; [X,Y]=meshgrid(x,y); Z=X.^2.*exp(-Y.^2); surf(X,Y,Z)
MATLAB dispone de cuatro funciones bsicas para crear grficos 2-D. Estas funciones se diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de ordenadas.
Estas cuatro funciones son las siguientes:
B= 4 1 2 9
13 8 5 15
9 3 7 10
11 6 4 12
introducimos las matrices como lo sealamos al inicio del curso de la siguiente forma: >> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; >> B=[4 13 9 11; 1 8 3 6; 2 5 7 4; 9 15 10 12]; >> C=A+B
C= 20 6 11 13
15 12 24 19 13 14 12 13 16 29 25 13
Encontrar el valor inicial y el valor final de: f(t) = 3e-2t + 6e-t teorema del valor final a=laplace((3*exp(-2*t))+(6*exp(-t))) a= 3/(s+2)+6/(s-1) b=s c=a*b c= (3/(s+2)+6/(s-1))*s limit(c,0) ans = 0 teorema del valor inicial c= (3/(s+2)+6/(s-1))*s limit(c,inf) ans = 9
3s 5 Fs 2 s 4s 3
ilaplace((3*s+5)/(s^2+4*s+3)) ans = 2*exp(-3*t)+exp(-t)
Para ver los polos (o los ceros) de la funcin de transferencia, podemos usar: roots(den) y roots(num). Una forma mas completa de convertir una funcin de transferencia dada por dos polinomios numerador y denominador mediante el comando tf2zp: [ceros ,polos ,gan] = tf2zp (num,den); que devuelve un vector conteniendo los ceros de la funcin de transferencia, un vector conteniendo los polos, y un escalar correspondiente a la ganancia esttica. La funcin complementaria a sta tambin existe: [num,den] = zp2tf (ceros,polos,gan);
DOMINIO TEMPORAL
Funcin step
t = [0:.3:15]; y = step(num,den,t); plot (t,y); title (Respuesta a un escaln unitario); xlabel (tiempo(seg)); grid;
DOMINIO TEMPORAL
Funcin impulse
impulse (num,den,t)
La respuesta del sistema a cualquier tipo de entrada tambin puede obtenerse. Para ello es necesario tener la seal de entrada en un vector u, que lgicamente deber tener la misma dimensin que el vector de tiempos.
DOMINIO TEMPORAL
En sistemas multivariables, en vez de un vector de entradas tendremos una matriz. A estos efectos se usa la funcin lsim. Un ejemplo caracterstico es la respuesta a una entrada en rampa: ramp = t; y = lsim (num,den,ramp,t); plot (t,y,t,ramp); title (Respuesta a una rampa); xlabel (tiempo(seg));
DOMINIO TEMPORAL
Otro ejemplo caracterstico es la respuesta a un ruido uniforme aleatorio. Es importante darse cuenta del filtrado que se produce en la seal cuando pasa por el sistema (hace de filtro paso bajas). noise = rand (size(t)); y = lsim (num,den,noise,t); plot (t,y,t,noise); title (Respuesta a un ruido aleatorio); xlabel (tiempo(seg));
DOMINIO FRECUENCIAL
La respuesta en frecuencia de los sistemas se puede obtener usando las funciones bode, nyquist y nichols.
Funcin bode
A continuacin se presentan ejemplos de las tres posibles sintaxis de la funcin bode:
1.- bode(num,den) 2.- [mag,phase,w] = bode (num,den) 3.- [mag,phase] = bode (num,den,w)
DOMINIO FRECUENCIAL
Funcin nyquist
El comando nyquist tiene la misma sintaxis: nyquist (num,den,w); [re,im] = nyquist (num,den,w);
DOMINIO FRECUENCIAL
Funcin nichols
nichols (num,den,w), ngrid; [mag,phase] = nichols (num,den,w);
MRGENES DE ESTABILIDAD
Como es bien sabido en la teora clsica del control, los mrgenes de estabilidad son el margen de fase y el margen de ganancia. Estos mrgenes se calculan usando el comando margin. margin (num,den); [mg,mf,wmg,wmf] = margin (num,den);
num = [0.2 0.3 1]; den = [1 0.9 1.2 0.5]; T = 1; % Tiempo de retardo puro w = logspace (-2,1,100); [mag,fase] = bode (num,den,w); faseDelay = fase - (T*w*180/pi); subplot(211); semilogx (w, 20*log10(mag)); grid; subplot(212); semilogx (w, [fase, faseDelay]); grid;
[N12,D12] = series (N1,D1,N2,D2): Devuelve la resultante de colocar en serie dos Funciones de transferencia
[Nbc,Dbc] = cloop (N1,D1,-1): En el caso en que se pretenda obtener la funcin de transferencia en bucle cerrado con realimentacin unitaria, puede emplearse este comando mas compacto, en el que se evita tener que especificar una segunda funcin de transferencia.
Otra utilidad para ver la sobre oscilacin que correspondera a un par de polos complejos conjugados situados en el lugar, seria dibujar los lugares geomtricos de factor de amortiguamiento () y frecuencia natural (n) constantes, mediante el comando sgrid.
G(s)= K 1+tS
que en notacin matlab se introduce: K = 1; tau = 1; num = K; den = [tau 1]; La respuesta a un escaln unitario es: t = [0:0.1:10]; ye = step(num,den,t); plot(t,ye); title (Respuesta a un escaln unitario); xlabel (tiempo(seg)); grid;
donde: K: ganancia esttica del sistema. Se va a suponer en el anlisis siguiente, sin perdida de generalidad, que K = 1. : Coeficiente de amortiguamiento. wn: Frecuencia natural no amortiguada del sistema.
Caso 1:
Si > 1 2 races reales distintas (sobre amortiguado).
t = [0:0.2:20]; wn = 1; d = 2; num = [wn^2]; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escaln unitario); xlabel (tiempo(seg)); grid;
Caso 2:
Si = 1 2 races reales iguales sistema crticamente amortiguado.
d = 1; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escaln unitario); xlabel (tiempo(seg)); grid;
Caso 4:
Si = 0 Respuesta oscilatoria. Sistema crticamente estable. Races en eje imaginario. d = 0; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); plot (t,ye); title (Respuesta a un escalon unitario); xlabel (tiempo(seg)); grid;
Se puede tambin analizar para este tercer caso de dos races complejas el efecto de modificar el factor de amortiguamiento. Se muestra para valores = {0.1, 0.2, ...0.9} t = [0:0.2:20]; wn = 1; vectDelta = [0.1:0.1:0.9]; num = wn^2; Y = []; for ind = 1:length(vectDelta) d = vectDelta(ind); den = [1,2*d*wn,wn^2]; y = step (num,den,t); Y = [Y, y]; end plot (t,Y); title (Respuesta a un escaln unitario); xlabel (tiempo(seg)); grid;
Se mantiene el valor de = 0.2 para el siguiente anlisis: d = 0.2; den = [1,2*d*wn,wn^2]; ye = step (num,den,t); La salida del sistema viene dada por la ecuacin:
Funcin rltool
Este comando facilita el estudio de la funcin de transferencia de una planta y esta disponibles en versiones de Matlab superiores al 5.3.
INTRODUCCIN AL SIMULINK
Simulink es una herramienta para la simulacin de sistemas dinmicos. Esto es decir que resuelve ecuaciones diferenciales ordinarias usando mtodos numricos (Euler, Runge Kuta, etc.). Los sistemas dinmicos (representados por ecuaciones diferenciales) se deben introducir a este programa por medio de su descripcin en diagramas de bloques. La descripcin por diagrama en bloques usa lneas para representar variables y bloques para representar funciones. Las lneas son usadas para interconectar los bloques entre s.
Librera de bloques.
Para la elaboracin del diagrama de bloques, se dispone de una librera de bloques. sta librera se invocar ejecutando el siguiente comando: simulink En la siguiente figura se puede ver la ventana que se abre en consecuencia.
BLOQUES MS COMUNES
BLOQUES MS COMUNES
BLOQUES MS COMUNES
EJEMPLO ELEMENTAL
Supngase que desee ver una curva senoidal y su integral en el tiempo. Esto responde a la siguiente ecuacin diferencial:
PARMETROS DE SIMULACIN
donde k representa la ganancia esttica del sistema, t es su constante de tiempo y L es el retardo del mismo. Comenzaremos viendo la respuesta de este sistema a lazo abierto ante una entrada en escaln, y para ello construiremos el siguiente sistema en SIMULINK
CONTROLADOR PID
Annimo......
Preguntas ??????????