Está en la página 1de 19

INTRODUCCIN A MATLAB

M. Santos Ingeniera de Sistemas y Automtica Facultad de Informtica

Introduccin a MATLAB
M. Santos

PARTE I: INTRODUCCIN AL MATLAB


Matlab (Matrix Laboratory) es un lenguaje de alto nivel que integra facilidades de clculo, visualizacin y programacin en un entorno muy sencillo de utilizar. Utiliza una notacin matemtica muy simple para tratar los problemas y resolverlos. 1. INTRODUCCIN Y CARACTERSTICAS BSICAS

Matlab es un intrprete de comandos que permite la realizacin de cualquier operacin con matrices de forma sencilla y rpida. Es un sistema interactivo cuyo elemento bsico es la matriz (y como caso particular, vectores o escalares), tanto de datos numricos como de informacin no numrica. Todo elemento se considera una matriz: por ejemplo, un escalar es una matriz de (1x1); un vector es una matriz con solo una fila o una columna; una cadena de caracteres es una matriz fila de elementos (uno por letra), etc. Al ser un intrprete, en la ventana principal aparece evaluado el ltimo comando suministrado al programa. Para evitar su visualizacin, conviene terminar los comandos con punto y coma ;. Esto es tambin til cuando se ejecutan programas con varias rdenes, si no queremos que todos los resultados de las operaciones sean volcados en la pantalla. Si no se especifica el nombre de una variable para almacenar un resultado, por defecto este se vuelca en una variable temporal ans. Todas las variables que se utilicen durante una sesin quedan en el espacio de trabajo de Matlab, y pueden utilizarse mientras no se salga del programa o se eliminen. Para ver las variables existentes en el espacio de trabajo de Matlab se utiliza who o whos. Al visualizar la salida de esta orden, se puede destacar el uso de las variables como matrices y la distincin de si tienen o no elementos complejos. 1.1 ARCHIVOS MATLAB (SCRIPT O ARCHIVOS M) Matlab es un potente lenguaje de programacin, a la vez que un entorno interactivo de computacin. Al ser un intrprete, ejecuta inmediatamente las rdenes que se le suministran. Cuando queremos realizar un nmero de comandos elevado y repetir stos, la mejor solucin es crear un fichero de texto, con extensin .m, donde se recojan esas rdenes. Matlab dispone para ello de un editor propio. Ese archivo script se puede invocar desde la lnea de comandos simplemente poniendo el nombre del fichero. Para ejecutar un fichero de Matlab (con extensin m) debe estar en el path, para lo que hay que incluir el directorio que lo contiene en el path, o moverse al directorio correspondiente utilizando los comandos propios del sistema operativo.
Ingeniera de Sistemas y Automtica Facultad de Informtica

Introduccin a MATLAB
M. Santos

Se pueden introducir comentarios (no ejecutables) en los ficheros anteponiendo en la lnea correspondiente el smbolo %. Para introducir argumentos, se pueden leer desde el teclado (por ejemplo, con el comando input), o leerlos de una variable del espacio de trabajo, etc. Sin embargo, la forma ms natural de aceptar argumentos de entrada y devolver resultados es mediante una funcin, lo que aporta la flexibilidad de poder cambiar los parmetros de entrada siempre que queramos en la llamada a esa funcin (help function). Las variables internas son locales a la funcin. 2. EL USO DE LA AYUDA

La herramienta de ayuda se invoca con el comando help de Matlab. Para obtener una lista de los temas en los que se agrupan las funciones existentes basta utilizar la orden help:
help HELP topics: toolbox\local - Local function library. Matlab\elfun - Elementary math functions. Matlab\elmat - Elementary matrices and matrix manipulation. Matlab\funfun - Function functions - nonlinear numerical methods. Matlab\general - General purpose commands. Matlab\color - Color control and lighting model functions. Matlab\graphics - General purpose graphics functions. toolbox\control - Control System Toolbox. toolbox\ident - System Identification Toolbox. toolbox\signal - Signal Processing Toolbox. simulink\simulink - SIMULINK model analysis and construction functions. simulink\simdemos - SIMULINK demonstrations and samples. simulink\blocks - SIMULINK block library.

..
For more help on directory/topic, type "help topic".

Los grupos de funciones que tratan un tema relacionado se denominan Toolbox. Si se desea ver las rdenes que tratan un tema en particular se debe utilizar help y el nombre del tema, por ejemplo para ver las rdenes que manejan grficos se escribira:
help graphics General purpose graphics functions.

Para ver el funcionamiento de una orden en particular se debe poner help y el nombre de dicha funcin:
help subplot

Ingeniera de Sistemas y Automtica

Facultad de Informtica

Introduccin a MATLAB
M. Santos

En la ayuda se muestran las distintas formas de utilizacin de la funcin, para qu sirve y un pequeo ejemplo de su uso. Tambin existe documentacin on-line, un asistente desde Matlab y documentos pdf (manuales de referencia, etc.) 3. TRATAMIENTO DE DATOS 3.1 TIPOS DE DATOS Como ya se ha comentado, el elemento bsico de Matlab es la matriz. Las matrices se pueden introducir en Matlab de distintas formas: - Como una lista explcita de elementos - Cargando matrices de un fichero externo - Generar matrices mediante funciones, etc. Los datos de una matriz pueden ser reales o enteros, numricos o caracteres alfanumricos, etc. No hace falta definir ningn tipo de dato antes de asignarle un valor, aunque s es necesario que tenga un valor en el momento de utilizarse. Existen distintos formatos para trabajar con distinta precisin (short, long, hexadecimal, etc). Si se trata de un nmero imaginario, se trabaja con la unidad compleja, que es el nmero i, y se introduce multiplicndolo por la variable correspondiente. Representa el valor i = 1 . Posee todas las propiedades de los nmeros complejos (suma, conjugado, etc). La forma de escribir una matriz es introducir los datos entre corchetes, separando los elementos de una fila con espacios en blancos o comas, y terminar cada fila con punto y coma. Por ejemplo, tecleando: A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] aparece:
A= 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

Una vez introducido un elemento, pasa a forma parte del espacio de trabajo, y se puede hacer referencia a l simplemente con su nombre en la ventana de comandos. El elemento de la fila i y la columna j de A se llama A(i, j). Por ejemplo, A(4,2) es el dato de la cuarta fila y segunda columna, es decir, 15. Se puede operar de esta manera con los distintos elementos de una matriz:
A(1,4) + A(2,4) + A(3,4) + A(4,4)

Ingeniera de Sistemas y Automtica

Facultad de Informtica

Introduccin a MATLAB
M. Santos

ans = 34

Para un vector, un elemento concreto se denota A(k), aunque tambin el valor A(k) puede ser un dato de una matriz, en cuyo caso sera a contar k datos empezando por el primer elemento de la primera fila. Por ejemplo, A(8) sera 15, el valor de A(4,2). Si se hace una llamada a un elemento de una matriz que no existe A(4,5) porque excede su dimensin, da error. Para operar matrices deben tener dimensiones iguales o compatibles, segn el tipo de operacin que apliquemos. Sin embargo, si almacenamos un valor en un elemento fuera de la matriz, sta se amplia hasta que abarca a ese nuevo dato. Por ejemplo:
A(4,5) = 17.62 A= 16 5 9 4

3 10 6 15

2 11 7 14

13 0 8 0 12 0 1 17.62

La definicin de intervalos se facilita mucho con el operador dos puntos :. Por ejemplo, la expresin 1:10 genera un vector fila con los enteros de 1 a 10, con un paso unitario entre ellos (por defecto).
1 2 3 4 5 6 7 8 9 10

Para un espaciado no unitario, se especifica el incremento (positivo o negativo, real o entero) de la siguiente manera:
100:-7:50

dara 100
0:pi/4:pi

93

86

79

72

65

58

51

resulta
0 0.7854 1.5708 2.3562 3.1416

Esto se puede aplicar a la matrices, tanto para crearlas como para leer sus elementos; por ejemplo, A(1:k,j) dara un vector formado por los k primeros elementos de la columna j. Es decir, una forma ms compacta de sumar los 4 elementos de la columna 4 sera sum(A(1:4,4)) que dara de nuevo 34.

Ingeniera de Sistemas y Automtica

Facultad de Informtica

Introduccin a MATLAB
M. Santos

Hay otras formas de hacerlo; por ejemplo, : se refiere a todos los elementos de la fila o columna de la matriz.
sum(A(:,end)) ans = 34

Tambin se puede trabajar con cadenas de texto, donde el texto se considera como un array con los ordinales correspondientes al valor ASCII de dichos caracteres. Se introduce una cadena de caracteres con comillas simples ().
palabra1='hola colegas' palabra1 = hola colegas palabra2='introduccin' palabra2 = introduccin

Si se quiere crear un array de caracteres, todos deben tener el mismo nmero de smbolos, y si no se deben rellenar con espacios:
parrafo=[palabra1;palabra2;'al Matlab '] parrafo = hola colegas introduccin al Matlab

Como realmente son arrays de enteros, los arrays de caracteres tambin se puede operar matemticamente. Por ejemplo, pasar a maysculas aadiendo la diferencia del ordinal de la a y la A, convertir a texto una cadena de nmeros ASCII (setstr), o encontrar el valor ASCII de una cadena (abs). 3.2 OPERADORES BSICOS Los operadores pueden utilizarse tanto con matrices como con sus elementos (nmeros enteros, reales, imaginarios, etc).
suma : a + b resta : a - b multiplicacin : a * b divisin : a / b a\ b potencia : a ^ b

Por ejemplo:
A=[3, 4, 5] ; B=[5 ; 1 ; 2] ;

El resultado de A*B ser 29.

Ingeniera de Sistemas y Automtica

Facultad de Informtica

Introduccin a MATLAB
M. Santos A*B ans = 29

Por supuesto, las operaciones con arrays siguen las normas convencionales, tanto para el producto escalar de vectores como para el producto de matrices. 3.3 OPERADORES RELACIONALES Y LGICOS Incluyen todas las comparaciones comunes : <, >, <=, >=, == (igual) y ~= (distinto). Los operadores lgicos son : & (and), | (or) y ~ (not) El operador se puede utilizar entre arrays del mismo tamao (se comparan componente con componente) o un array y un escalar (el escalar se compara con cada elemento del array). Se pueden utilizar a la vez operadores lgicos y relacionales:
(abs(' ')< parrafo(3,:)) & (parrafo(3,:)< abs('a'))

Los operadores relacionales permiten realizar operaciones sobre unas componentes y no sobre otras. Por ejemplo, al realizar la operacin siguiente se obtendra NaN, que significa que no resulta un nmero. Esto ocurre porque se ha dividido por cero, lo que da una indeterminacin.
x=(-2:2)/2 x= -1.0000 -0.5000 0 0.5000 sin(x)./x Warning: Divide by zero ans = 0.9589 NaN 0.9589 0.8415

1.0000

Se usa un punto antes de la barra de divisin para indicar que la operacin es escalar y se debe realizar componente a componente y no utilizando las reglas de operacin con matrices. La siguiente tabla muestra el orden de preferencia de todos los operadores bsicos, siendo la de mayor preferencia la superior. Preferencia de operadores en Matlab ^ .^ . * / \ .* ./ .\ + - ~ +(unario) -(unario) : > < >= <= == ~= | &

Ingeniera de Sistemas y Automtica

Facultad de Informtica

Introduccin a MATLAB
M. Santos

3.4 CONTROL DE FLUJO Matlab admite diversas estructuras de control de flujo:


if switch case for while continue break

Se utilizan como en cualquier otro lenguaje de programacin. Suelen escribirse en archivos de Matlab y no directamente en la lnea de comandos. Permiten tambin estructuras anidadas. Es importante tener en cuenta las sentencias que terminan esos controles (end), para colocarlas cuando son necesarias y en el orden adecuado. Algunos ejemplos de estructuras de control de flujo son: A) BUCLES FOR Los bucles for permiten que un grupo de rdenes se repitan un nmero fijo y predeterminado de veces. La forma general de un bucle for es:
for x= array, rdenes end ;

Las rdenes entre las sentencias for y end se ejecutan una vez para cada columna del array. Es decir, en cada iteracin la variable x valdr x=array( :,i) variando i entre 1 y la ltima columna. Los bucles for deben seguir siempre estas reglas: a) Un bucle for no puede terminarse reasignando a la variable del bucle un valor dentro del bucle. b) Pueden anidarse tantos bucles como se desee, pero todos deben terminar con un end y el ms interior corresponder al for ms interior. c) Deben evitarse siempre que exista otro mtodo, en forma de array o matriz, de resolver el problema planteado. La forma for, al ser un intrprete, siempre ser ms lenta y larga de escribir que una forma matricial. Por ejemplo:
for n=1 :10, x(n)=sin(n*pi/100); end; n=1 :10 ; x=sin(n*pi/100) ;

Ingeniera de Sistemas y Automtica

Facultad de Informtica

Introduccin a MATLAB
M. Santos

B) BUCLES WHILE Un bucle while repetir un conjunto de rdenes un nmero indefinido de veces. El nmero de veces que se repetir depender de si se cumple o no una determinada condicin. La forma general es:
while expresin, rdenes end;

Las rdenes se ejecutan mientras expresin sea verdadera. C) ESTRUCTURAS IF-ELSE-END En muchas ocasiones es necesario evaluar una expresin dependiendo de que una condicin se cumpla o no. Esta estructura es:
if expresin, rdenes end ;

En algunos casos existen dos alternativas, dependiendo de si es cierta o no dicha expresin. Entonces:
if expresin, rdenes_si_expresin_verdadera else rdenes_si_expresin_falsa end ;

Cuando hay tres o ms opciones la forma de la estructura if-else-end ser:


if expresin1, rdenes_si_expresin1_verdadera elseif expresin2, rdenes_si_expresin2_verdadera elseif expresin3, rdenes_si_expresin3_verdadera ... else rdenes_si_ninguna_expresin_verdadera end ;

En esta ltima forma slo se evalan las rdenes asociadas con la primera expresin verdadera; las expresiones condicionales siguientes se saltan hasta el end y ni siquiera se evalan. La orden else es opcional y podra no aparecer. Una ltima anotacin referente a las estructuras. Existe una forma de salir (o romper) un bucle for o while, con la sentencia break, pero sta no puede romper una estructura if-else-end.
Ingeniera de Sistemas y Automtica Facultad de Informtica

Introduccin a MATLAB
M. Santos

4.

GRFICOS

En Matlab existen diversas formas de visualizar los datos. El comando ms directo y sencillo es plot: si y es un vector, produce un grfico lineal a tramos de los valores de y (eje de ordenadas) frente a un vector ndice de los elementos del vector (eje de abscisas).
plot(x,y) plot(y),

representa el vector x frente al vector y. (creacin de un vector x de 0 a 2pi)

Ejemplo:
x = 0:pi/100:2*pi; y = sin(x); plot(x,y)

Este comando establece automticamente los lmites de los ejes, el escalado de cada eje, dibuja los puntos individuales y lneas entre ellos, etc. Adems, permite hacer grficas de distintos conjuntos de datos sobre el mismo eje, realizar lneas punteadas o de otros tipos, elegir los colores de las grficas, etc (help plot). As mismo, se pueden especificar etiquetas para cada uno de los ejes, as como un ttulo para la figura:
xlabel('x = 0:2\pi') ylabel('Funcin seno de x') title(Representacin de la funcin seno,'FontSize',12)

El comando grid dibuja una cuadrcula como fondo de la figura. Se pueden dibujar distintos datos en una figura, en cuyo caso es til diferenciar cada una de las grficas por un color (Matlab lo hace automticamente, pero lo puede definir el usuario mediante la inicial del color) o un smbolo (asterisco, cruces, puntos, etc.); por ejemplo:
y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,r*,x,y2,b+,x,y3, g-) Ingeniera de Sistemas y Automtica Facultad de Informtica

10

Introduccin a MATLAB
M. Santos

Para mostrar distintas grficas dentro de una misma ventana existe un comando muy flexible y potente, subplot (help subplot). La orden
subplot(m,n,p)

divide la ventan en una matriz mxn de figuras, y selecciona la p para dibujar la actual grfica. Tambin se pueden realizar dibujos en tres dimensiones, dibujos de superficies, contornos, realizar distintas vistas de un mismo dibujo, etc. Matlab abre automticamente una nueva figura para representar una grfica si no hay ninguna abierta. Si ya exista, la reemplaza. Para mantener dos figura superpuestas, se utilizada el comando hold (o hold on), que se libera con hold off. Tambin se puede crear una nueva ventana con el comando figure(n), o si hay varias abiertas, referirse a una de ellas con esa misma orden. Para salvar una figura, en el men de archivo est disponible la opcin Save; por defecto se le da formato TIFF. Tambin se puede guardar con otros formatos. Existe una facilidad, los GUIs de Matlab, que permite disear ventanas con mens para mostrar distintas opciones, evaluarlas, ejecutarlas, etc. Hay una herramienta de Matlab que facilita este diseo de interfaces, denominada GUIDE.

Ingeniera de Sistemas y Automtica

Facultad de Informtica

11

Introduccin a MATLAB
M. Santos

PARTE II: APLICACIN DE MATLAB EN MODELADO Y SIMULACIN DE SISTEMAS

1.

SISTEMAS CONTINUOS Y DISCRETOS

Multitud de sistemas pueden estudiarse en Matlab desde diversos aspectos como: su comportamiento en frecuencia o en el tiempo, su estabilidad, etc. Existen ciertas facilidades en Matlab para representar y trabajar con los sistemas, tanto definiendo su funcin de transferencia (relacin de la salida de un sistema con la entrada) mediante comandos desde la ventana de Matlab, como mediante el uso de la herramienta Simulink, que permite especificar el sistema como un diagrama de bloques. 1.1. SISTEMAS CONTINUOS

Los sistemas continuos que se suelen tratar son sistemas lineales, que representan algn problema o planta real; en el caso de que el sistema no fuera lineal habra primero que linealizarlo. Estos sistemas continuos representarn entradas y salidas que varan continuamente con el tiempo. Un ejemplo sencillo sera el de un sistema cuya funcin de transferencia en lazo abierto es: Ga ( s ) = 4 4 = 2 s( s + 5) s + s + 5s

Que se puede representar como un diagrama de bloques en lazo cerrado (con realimentacin):
x 25 + -

4 s + 5s
2

Para introducir la funcin de transferencia se definen dos polinomios, en orden descendente, que representen el numerador y denominador de la funcin de transferencia en lazo abierto.
numa=4; dena=[1 5 0];

La funcin de transferencia en lazo cerrado (con realimentacin unitaria en este caso), puede calcularse a partir del diagrama de bloques mostrado y mediante Matlab con el comando cloop (donde el ltimo parmetro corresponde al valor de la realimentacin):
Ingeniera de Sistemas y Automtica Facultad de Informtica

12

Introduccin a MATLAB
M. Santos

[numc,denc]=cloop(numa,dena,-1); num=numc*25 num = 0 0 100 den=denc den = 1 5 4

Luego, en lazo cerrado, el sistema tiene la siguiente funcin de transferencia: G( s) = 100 s + 5s + 4


2

En Matlab se pueden utilizar distintos tipos de representacin de los sistemas. As, se puede ver la descripcin en el espacio de estados de este sistema, que vendr dada por los valores de alas matrices a, b, c y d:
[A,B,C,D]=tf2ss(num,den); printsys(A,B,C,D) a= x1 x2 x1 -5.00000 -4.00000 x2 1.00000 0 b= x1 x2 c= y1 d= y1

u1 1.00000 0

x1 x2 0 100.00000

u1 0

Un sistema se puede someter al sistema a diversas entradas como son: escaln, impulso, o cualquier seal generada por el usuario. Por ejemplo, la respuesta escaln (step) del sistema en lazo abierto y lazo cerrado seran:
whitebg step(numa,dena),step(num,den)

Ingeniera de Sistemas y Automtica

Facultad de Informtica

13

Introduccin a MATLAB
M. Santos

Sistema en lazo abierto

Sistema en Lazo cerrado

O a una entrada de tipo senoidal en el lazo cerrado:


t=0:0.1:20; w=2*pi/3; u=10*sin(w*t); [y,x]=lsim(num,den,u,t); plot(t,y) xlabel('Tiempo(seg.)'),ylabel('Amplitud')

1.2.

SISTEMAS DISCRETOS

Los sistemas discretos son sistemas cuyas dinmicas y seales cambian solamente en puntos claramente especificados en el tiempo. Un sistema continuo que sea controlado por una computadora deber ser estudiado como un sistema discreto, debido a que el controlador (en este caso la computadora) es discreto. Suponer un sistema continuo cuya funcin de transferencia es: G (s) = 1 s ( s + 1)

Se introduce el numerador y el denominador del sistema como polinomios. Para convertirlo a discreto es necesario aplicar un mtodo de conversin (por ejemplo, un retenedor de orden cero ZOH) y seleccionar el periodo de muestreo del sistema:
Ingeniera de Sistemas y Automtica Facultad de Informtica

14

Introduccin a MATLAB
M. Santos

num=1; den=[1 1 0]; [numd,dend]=c2dm(num,den,1,'zoh') numd = 0 0.3679 0.2642 dend = 1.0000 -1.3679 0.3679

Luego la funcin discreta a tratar tendr la forma: H ( z) = 0.3679 z + 0.2642 z 1.3679z + 0.3679
2

La respuesta de este sistema en lazo cerrado a una entrada escaln sera:


[numc,denc]=cloop(numd,dend,-1) ; y=dstep(numc,denc,50);stairs(y); xlabel('No. muestras');ylabel('Amplitud');

Existen diversos mtodos para implementar la conversin de continuo a discreto de un sistema. En general, se pueden realizar todos los estudios que se necesiten al igual que en un sistema continuo. 2. RESOLUCIN DE ECUACIONES

Existen dos comandos que utilizaremos para la resolucin de sistemas de ecuaciones, segn sean ecuaciones diferenciales (ode) o ecuaciones en diferencias (feval). Aplican mtodos de integracin para resolver las variables del sistema y obtener su valor en el tiempo.

Ingeniera de Sistemas y Automtica

Facultad de Informtica

15

Introduccin a MATLAB
M. Santos

2.1 ODE Un archivo ODE es una funcin de un archivo .m que se escribe para definir un problema de ecuaciones diferenciales de forma que los resolutores (solvers) de la coleccin de ODE (Ecuaciones Diferenciales Ordinarias) obtengan sus valores en el tiempo. Se denomina coleccin porque existen diversos distintos grados de precisin para resolver las ecuaciones. Por defecto, los solvers de la coleccin ode resuelven ecuaciones diferenciales del tipo: dy/dt = F(t,y), donde la t es una variable independiente e y es un vector de variables dependientes. Para hacer esto, los solvers llaman repetidamente a F=ODEFILE(T,Y) donde el T es un argumento escalar, Y es un vector columna, y se espera que la salida de esa funcin, F, sea un vector columna de la misma longitud. Ntese que el archivo de ODE debe aceptar los argumentos de T y Y, aunque no tiene que usarlos. En su forma ms simple, un archivo de ODE puede codificarse como:
function F = odefile(t,y) F = < la Insercin de una funcin de t y/o y aqu. >;

De forma ms completa, el comando:


[T,Y] = ODE23 ('F',TSPAN,Y0) con TSPAN = [T0 TFINAL]

integra el sistema de las ecuaciones diferenciales y= F(t,y), desde T0 a TFINAL, con la condicin inicial Y0. 'F' es un string con el nombre de un archivo ODE, que contiene el sistema de ecuaciones a integrar. La funcin F(t,y) debe devolver un vector columna. Cada fila en el array solucin Y corresponde a un tiempo devuelto en el vector columna T. Para obtener las soluciones en los tiempos especficos T0, T1,..., TFINAL (todo creciente o todo decreciente, con un paso especificado), se puede usar TSPAN = [T0 T1... TFINAL].
[T,Y] = ODE23 ('F',TSPAN,Y0,OPTIONS)

resuelve el sistema de igual forma que el anterior, pero con los parmetros de integracin que antes tena por defecto reemplazados ahora por los valores dados en OPCIONES. Normalmente las opciones usadas por defecto son la tolerancia escalar del error relativo 'RelTol' (1e-3 es el valor por defecto), y vector de tolerancias absolutas del error 'AbsTol', que se aconseja no cambiar. Los argumentos vacos al final de la lista de la llamada puede omitirse, es decir,
ODE23 ('F').

Como ejemplo, las ordenes


options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]); ode23('rigidode',[0 12],[0 1 1],options); Ingeniera de Sistemas y Automtica Facultad de Informtica

16

Introduccin a MATLAB
M. Santos

resuelve el sistema y= rigidode(t,y), con el error relativo tolerancia 1e-4 y tolerancias absolutas de 1e-4 para los primeros dos componentes, y 1e-5 para el tercero. Cuando se llama a esta funcin sin los argumentos de salida, como en este ejemplo, ODE23 llama la funcin de salida predefinida ODEPLOT para trazar la solucin, es decir, dibuja la grfica de la solucin del sistema en el tiempo. Otro ejemplo:
ode23('ecologico',[TI TF],[N1 N2]);

resuelve la funcin ecolgico (definida en un archivo llamado ecologico.m) mediante el mtodo de integracin de Runge-Kutta, en el intervalo TI TF, con las condiciones iniciales N1 y N2. 2.2 FEVAL La funcin FEVAL es similar a la ODE, pero se aplica a la resolucin de ecuaciones en diferencias, es decir, para sistemas discretos. Por lo tanto, no requiere una variable tiempo en su formulacin, ya que es la que adopta el paso en la resolucin.
FEVAL(F,x1,... ,xn)

Ejecuta la funcin especificada por una cadena de caracteres, F, que contiene el nombre de una funcin (normalmente definida en un archivo .m), y evala esa funcin con los argumentos dados. Por ejemplo,
F = foo', FEVAL(F,9.64)

es igual que foo(9.64). FEVAL se usa normalmente dentro de funciones que tienen los nombres de otras funciones como argumentos. Si queremos guardar la salida de las soluciones del sistema, utilizaramos el comando de la siguiente manera:
[y1,.. ,yn] = FEVAL(F,x1,... ,xn) devuelve mltiples argumentos de salida.

3. ALEATORIEDAD Se introducen aqu las funciones de distribucin de probabilidad ms utilizadas:

Ingeniera de Sistemas y Automtica

Facultad de Informtica

17

Introduccin a MATLAB
M. Santos

3.1 RAND
rand:

genera nmeros aleatorios distribuidos uniformemente

es una matriz NxN con las entradas aleatorias, escogidas de una distribucin uniforme en el intervalo (0.0,1.0). Los comandos rand(M,N) y rand([M,N]) son matrices MxN con las entradas aleatorias. rand(SIZE(A)) crea una matriz de nmeros aleatorios del mismo tamao que A.
rand(n) rand sin

los argumentos es un escalar que cambia el valor cada vez que es llamado.

Este generador puede generar todo los nmeros en coma flotante en el intervalo cerrado [2^(-53), 1-2^(-53)]. Tericamente, puede generar 2^1492 valores antes de repetirse. La orden rand tiene un argumento opcional, state, que permite inicializar su estado, guardar en una variable el valor de su estado, etc.
rand ('seed') n=rand(1):

devuelve la semilla actual del generador uniforme.

genera un nmero real aleatorio (matriz 1x1), entre 0 y 1.

3.2. EXPRND
exprnd:

genera nmeros segn una distribucin aleatoria exponencial.

R = exprnd(MU)

devuelve una matriz de nmeros aleatorios escogidos de la distribucin exponencial con el parmetro MU de media. MU es exponente de e, por lo que si se busca un MU de 10, por ejemplo, entonces MU deber ser 1.1. El tamao de R es el tamao de MU. devuelve una matriz MxN.

R = exprnd(MU,M,N) M=exprnd(1.1,0.1):

genera un nmero aleatorio con una distribucin exponencial de

media 10. 3.3 LOGNRND


lognrnd:

genera nmeros segn una distribucin aleatoria log-normal.

devuelve una matriz de nmeros aleatorios escogidos de la distribucin log-normal con el parmetro MU de media y D de desviacin tpica. MU y D son exponentes de e, por lo que si queremos un MU o D de 10, entonces MU o D debern ser 1.1. El tamao de R es el tamao de MU y D.
R = lognrnd(MU,D) R = lognrnd(MU,D,M,N) devuelve Ingeniera de Sistemas y Automtica

una matriz MxN.


Facultad de Informtica

18

Introduccin a MATLAB
M. Santos

M=lognrnd(1.1,0.1):

genera un nmero aleatorio con una distribucin log-normal de media 10 y desviacin tpica 1. REFERENCIAS: 1. Matlab Student Edition, Prentice Hall, 2003 (www.mathworks.com) 2. Simulink Student Edition, Prentice Hall, 1996 3. Lpez Orozco, J.A., Manual de Matlab, Dpto. Arquitectura de Computadores y Automtica, UCM, 1996.

Ingeniera de Sistemas y Automtica

Facultad de Informtica

19

También podría gustarte