You are on page 1of 45

CURSO BSICO DE

MATLAB
INTRODUCCIN AL MATLAB
NDICE
CURSO BSICO DE ............................................................................................1
MATLAB............................................................................................................1
CAPTULO I: INTRODUCCIN.......................................................................................5
1.1 El programa MATLAB.......................................................................................................................................5
1.2 Ventanas en MATLAB.......................................................................................................................................5
1.2.1 Ventana de Comandos ....................................................................................................................................5
1.2.2 Ventana de grficos .......................................................................................................................................5
1.2.3 Ventana de edicin..........................................................................................................................................5
1.3 Entrada - salida....................................................................................................................................................6
1.3.1 Tipo de dato ....................................................................................................................................................6
1.4 Salida por pantalla...............................................................................................................................................6
1.4.1 Salida de pgina...............................................................................................................................................6
1.5 Formato de salida................................................................................................................................................6
1.6 Comandos generales que se deben recordar........................................................................................................7
1.6.1 Comandos que brindan informacin del directorio.........................................................................................7
CAPTULO 2: OPERACIONES CON MATRICES Y VECTORES..................................8
2.1 Variables y constantes en MATLAB.................................................................................................................8
2.2 Operadores aritmticos en MATLAB.................................................................................................................8
2.3 Modos de introducir matrices..............................................................................................................................9
2.3.1 Entrada de matrices por teclado......................................................................................................................9
2.4 Operaciones bsicas matriciales........................................................................................................................11
2.4.1 Transpuesta....................................................................................................................................................11
2.4.2 Suma y resta..................................................................................................................................................11
2.4.3 Producto ........................................................................................................................................................11
2.4.4 Inversa...........................................................................................................................................................11
2.4.5 Divisin ...............................................................................................................................................11
2.4.6 Potencia de matrices......................................................................................................................................12
- 2 -
INTRODUCCIN AL MATLAB
2.4.7 Determinante.................................................................................................................................................12
2.5 Funciones trascendentes matriciales.................................................................................................................12
2.6 Tipos de matrices predefinidos.........................................................................................................................12
2.7 Instruccin de asignacin..................................................................................................................................13
2.8 Operaciones con arreglos u operaciones punto.................................................................................................14
2.9 Polinomiales ....................................................................................................................................................14
CAPTULO 3. FICHEROS EN MATLAB.......................................................................16
3.1 Ficheros de comandos ......................................................................................................................................17
3.2 Establecimiento del camino de bsqueda.........................................................................................................19
CAPTULO 4. FUNCIONES ESTNDARES (BUILT IN)..............................................20
4.1 Funciones elementales matemticas.................................................................................................................20
4.2 Funciones que manipulan datos........................................................................................................................20
4.3 Operadores de relacin .....................................................................................................................................21
4.4 Operadores lgicos............................................................................................................................................21
4.5 Tratamiento de cadenas de caracteres...............................................................................................................22
CAPTULO 5. SUBPROGRAMAS. FICHERO FUNCIN.............................................24
CAPTULO 6. INSTRUCCIONES ESTRUCTURADAS................................................25
6.1 Instruccin if.....................................................................................................................................................25
6.2 Instruccin switch.............................................................................................................................................25
6.3 Instruccin for...................................................................................................................................................26
6.4 Instruccin while..............................................................................................................................................26
6.5 Estructuras o registros en MATLAB................................................................................................................27
CAPTULO 7. GRFICOS ...........................................................................................28
7.1 Grficos de una lnea.........................................................................................................................................28
7.2 Grficos de varias lneas...................................................................................................................................28
7.3 Grficas en el espacio........................................................................................................................................30
- 3 -
INTRODUCCIN AL MATLAB
7.4 Borrado de textos en grficos............................................................................................................................30
CAPTULO 8. ALGUNOS EJEMPLOS ........................................................................31
8.1 Solucin de sistemas lineales............................................................................................................................31
8.2 Solucin de ecuaciones diferenciales de manera numrica..............................................................................37
8.3 Solucin simblica de ecuaciones diferenciales...............................................................................................38
................................................................................................................................................................................38
................................................................................................................................................................................39
8.4 Integracin numrica.........................................................................................................................................40
8.5 Ecuaciones no lineales y optimizacin.............................................................................................................41
8.6 Integracin simblica........................................................................................................................................42
8.7 Transformada de Laplace..................................................................................................................................43
GLOSARIO DE FUNCIONES, COMANDOS Y CONSTANTES QUE SE MENCIONAN
........................................................................................................................................44
- 4 -
INTRODUCCIN AL MATLAB
Captulo I: Introduccin
1.1 El programa MATLAB
MATLAB es el nombre abreviado de MATrix LABoratory. Es un programa
para realizar clculos con vectores y matrices. Como caso particular puede
tambin trabajar con nmeros escalares, tanto reales como complejos. Una
de las capacidades ms atractivas es la de realizar una amplia variedad de
grficos en dos y tres dimensiones. MATLAB tiene tambin un lenguaje de
programacin propio. Es, para muchos, el paquete ms usado en ingeniera
en la actualidad.
Numerosas firmas y grupos en el mundo hacen macros o juegos de funciones y comandos
poderosos, por supuesto a partir de algunos de los que se vern aqu, que se conocen en el
mundo con el nombre de toolbox, y que resuelven problemas de ramas especficas, tales como
el control automtico, control no lineal, identificacin, grficos, matemtica simblica,
estadsticas, redes neuronales, fuzzy, procesamiento de seales, etc., y todos los aos aparecen
nuevos y mejores.
1.2 Ventanas en MATLAB
1.2.1 Ventana de Comandos
Es la ventana principal y se caracteriza por el prompt >>. Al correr la aplicacin es la primera
ventana que aparece. Todos los comandos, incluso aqullos utilizados para correr los programas
escritos por el usuario, son ejecutados desde esta ventana. Si se oprime el cursor hacia arriba o
hacia abajo se pueden editar los comandos tecleados.
1.2.2 Ventana de grficos
La salida de todos los comandos grficos es enviados a esta ventana. El usuario podr crear
tantas figuras como el sistema de memoria lo permita. Se regresa a la ventana de comandos
oprimiendo cualquier tecla.
1.2.3 Ventana de edicin
Aqu es donde el usuario escribe, edita y salva sus propios programas en ficheros llamados m-
files (ficheros punto m). Se accede por el men file en la opcin Open o new m-file.
Los comandos help y lookfor son muy importantes, pues brindan ayuda en lnea. Estos
comandos muestran en pantalla todas las funciones, comandos y, en general, todos los
elementos que forman parte del lenguaje. Se puede conocer lo fundamental de un comando si se
- 5 -
INTRODUCCIN AL MATLAB
teclea help comando. Se usa lookfor para encontrar los comandos relacionados con una palabra
clave, por ejemplo, inverse.
1.3 Entrada - salida
MATLAB soporta el clculo de forma interactiva, tomando la entrada desde la pantalla y
enviando la salida hacia la misma. Posibilita la lectura y escritura de ficheros. Las siguientes
caractersticas se mantienen para todas las formas de entrada - salida.
1.3.1 Tipo de dato
Bsicamente existe un solo tipo de dato que es la matriz compleja, los nmeros reales son casos
particulares. Cuando un nmero real es entrado como valor de un variable, MATLAB hace cero
automticamente la parte imaginaria.
Sensibilidad al tipo de letra. MATLAB es sensible al tipo de letra, diferencia las minsculas
de las maysculas. La variable A es diferente a la variable a.
1.4 Salida por pantalla
El resultado de la accin que realiza cada comando es visualizado en la pantalla. Sin embargo
esto puede evitarse tecleando un punto y coma al final del comando con excepcin de los
grficos y la ayuda en lnea. Para interrumpir un comando o un programa se usa ^C.
1.4.1 Salida de pgina
Para indicarle a MATLAB que muestre una sola pantalla de una sola vez es necesario teclear el
comando more. Se trata de un switch, more on muestra una sola pantalla a la vez, more off
desactiva esto y more(n) muestra n lneas por pantalla. De otra forma se enva la salida sin
importar si el usuario tiene tiempo o no de leer la informacin.
1.5 Formato de salida
Todos los clculos dentro de MATLAB son realizados usando doble precisin. La forma de
aparicin del punto flotante es controlada por el formato en uso. La siguiente tabla muestra el
valor de 10 en 7 formatos diferentes:
format short 31.4159
format short e 3.1416e+001
format long 31.41592653589793
format long e 3.141592653589793e+001
format hex 403f6a7a2955385e
format rat 3550/113
format bank 31.42
- 6 -
INTRODUCCIN AL MATLAB
Los formatos adicionales: format compact (suprime una lnea posterior) y format loose (pone
una lnea posterior) controlan el espacio por encima y por debajo de la presentacin del nmero.
format + , visualiza el signo del nmero.
format short es el asumido.
1.6 Comandos generales que se deben recordar
demo Corre el programa de demostracin
workspace Brinda informacin sobre el espacio de trabajo
who Lista todas las variables en uso
whos Lista todas las variables en uso y su dimensin
what Lista todos los ficheros .m, .mat y .mex existentes en el disco
clear Limpia el espacio de trabajo, elimina todas las variables
clear x, y, z Elimina las variables x, y, z
clf Limpia la pantalla grfica
clc Limpia la pantalla de texto
shg Muestra la pantalla grfica
exit, quit Retornan al SO.
clock Muestra un vector fila de 6 elementos: ao, mes, da, hora, min., seg.
computer Tipo de computadora con la que se est trabajando
date Informa la fecha actual
1.6.1 Comandos que brindan informacin del directorio
pwd Muestra el camino del directorio actual de trabajo
cd Cambia el directorio actual
ls Lista el contenido del directorio actual de trabajo
Tambin se pueden usar, del MS-DOS, type, delete, chdir, save, load
- 7 -
INTRODUCCIN AL MATLAB
Captulo 2: Operaciones con matrices y
vectores.
2.1 Variables y constantes en MATLAB
Los nombres de variables y funciones se forman por una letra seguida de cualquier combinacin
de letras (del alfabeto ingls) y dgitos. Sin embargo, solo los primeros 31 caracteres de la
variable y los primeros 8 de una funcin sern recordados por MATLAB. El guin bajo (_) se
considera como una letra.
Los parntesis se usan como en Pascal o C.
Es posible trabajar con nmeros complejos.
Se puede escribir directamente
v = 3 + 4i v = 3 + 4j v = 5*exp(i*atan (4/3))
Si la i o la j no van contiguas a nmeros debe escribirse el operador *.
Estas tres instrucciones almacenan el mismo nmero complejo.
Existen constantes predefinidas en MATLAB y que existen permanentemente:
eps es una constante que se usa para tolerancias en determinadas tareas. Por ejemplo para saber
cun cerca estamos de la singularidad.
eps = 2.2204 e-016
Tambin existe pi ( ) con su valor correspondiente.
inf que se trata de infinito y que se puede definir como 1/0.
nan (Non A Number) resulta de operaciones no definidas matemticamente tales como inf/inf,
0/0, etc.
2.2 Operadores aritmticos en MATLAB
+ Suma
- Resta
* Multiplicacin
\ Divisin izquierda
/ Divisin derecha
^ Potencia
Es importante que no haya espacios antes o despus de los operadores de cualquier tipo, pues
puede producir errores.
- 8 -
INTRODUCCIN AL MATLAB
2.3 Modos de introducir matrices
1.- Por teclado
2.- Generadas por funciones
3.- Creadas por los m-files
4.- Cargadas desde un fichero de datos externo con el comando load.
2.3.1 Entrada de matrices por teclado.
Existen tres formas de entrada de matrices por teclado.
A = [ 1 2 3; 4 5 6; 7 8 9]
A = [ 1, 2, 3; 4, 5, 6; 7, 8, 9]
A = [ 1 2 3
4 5 6
7 8 9]
Almacenan en A la matriz:
1 2 3
A = 4 5 6
7 8 9
Se puede referir a un elemento de la matriz A, por ejemplo, A(i, j). Se trata del elemento de la
fila i y la columna j.
Los elementos de la matriz pueden ser, en general, expresiones:
x = [1 sqrt(23) 2 3*[A(1, 1) 3] ]
Interesante:
x = [1 2 3]
x (5) = 9 entonces:
x = [ 1 4.7958 2 3 9]
Grandes matrices pueden construirse a base de pequeas:
A = [A; 10 11 12] lo que produce
A = 1 2 3
4 5 6
7 8 9
10 11 12
Pequeas matrices pueden extraerse de grandes:
- 9 -
INTRODUCCIN AL MATLAB
A = A(1: 3, 1: 2) Produce una matriz con las tres primeras filas y las dos primeras columnas de
A.
B = A(2, :) extrae la segunda fila de A.
Supongamos A = 1 2 3 4
5 6 7 8
0 0 0 0
3 4 2 1
B = A (1:2, 2:4) produce una matriz B = 2 3 4
6 7 8
B = A (1:2, 2) produce un vector B = 2
6

B = A (:, 3) produce B = 3
7
0
2
B = A (1:3, :) produce B = 1 2 3 4
5 6 7 8
0 0 0 0
B = A (:) produce B = [1 2 3 4 5 6 7 8 0 0 0 0 3 4 2 1]
Se pueden generar vectores
y = m : n : p genera un vector con los elementos desde m hasta p con un incremento n. n
puede ser negativo. Si el incremento no se especifica se asume uno.
Permiten hacer cosas como stas:
x = 0: 0.2: 1;
y = exp(-x).*sin(x);
[x, y] produce
ans =
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.1627 0.2610 0.3099 0.3223 0.3096
La entrada de escalares es muy sencilla. Ejemplo:
g = 9.8
- 10 -
INTRODUCCIN AL MATLAB
2.4 Operaciones bsicas matriciales.
2.4.1 Transpuesta
B = A'
X = [1 2 3 ] '
2.4.2 Suma y resta
Si A y B son conformes a la suma se puede escribir:
C = A + B C = A - B
Se pueden realizar operaciones de suma y resta con escalares.
Y = X - 1 si X = 1 entonces Y = 0
2 2
3 3
2.4.3 Producto
Slo se puede resolver si las matrices son conformes al producto.
Si A = [ 1 2 3 y x = [ - 1
4 5 6 0
7 8 0] 2 ]
b = A*x resulta
b = 5
8
-7
Por supuesto que pi*x = -3.1416
0.0000
6.2832
2.4.4 Inversa
B = inv (A) calcula la matriz inversa de A cuadrada no singular.
2.4.5 Divisin
Existen dos smbolos para dividir matrices / y \.
Si A es una matriz cuadrada no singular, entonces
- 11 -
INTRODUCCIN AL MATLAB
B/A = B*inv(A) (Divisin derecha)
B\A = inv(B)*A (Divisin izquierda)
Es decir,
x = A\b es la solucin de A*x = b
Se pueden dividir dos vectores:
Recordemos que x = [-1 0 2]' y que y = [-2 -1 1] '
s = x\y produce
s = 0.800
Esto es debido a que s = 0.800 es el valor del escalar que resuelve la ecuacin
sobredeterminada x*s = y por mnimos cuadrados.
Sin embargo S = y/x produce una respuesta:
S = [0 0 -1
0 0 -0.5
0 0 0.5]
2.4.6 Potencia de matrices

B^p Significa B a la potencia p. Solo es posible si B es cuadrada, se trata de una multiplicacin
sucesiva de B, si p es entero.
2.4.7 Determinante
B = det(A) calcula la determinante de A cuadrada.
2.5 Funciones trascendentes matriciales
Existen tres funciones para matrices: expm, logm y sqrtm.
expm(A) .....
! 3
A
! 2
A
A I e B
3 2
A
+ + + +
logm(A) = B de manera que A =
B
e
sqrtm(A) = B de manera que B*B = A
2.6 Tipos de matrices predefinidos.
eye (n) Matriz identidad cuadrada de orden n
eye(m, n) Matriz identidad de orden m*n
ones(n) Matriz unitaria cuadrada de orden n
ones(m, n) Matriz unitaria de orden m*n
- 12 -
INTRODUCCIN AL MATLAB
zeros(m, n) Matriz de ceros de orden m*n
rand(m, n) Matriz con elementos aleatorios de orden m*n
diag(V, K) Si V es un vector fila o columna de n componentes,
se construye una matriz de orden n + abs(k) colocando
el vector en la K-sima diagonal (K = 0 es la diagonal principal), K > 0
encima de la diagonal principal y K < 0 por debajo).
diag(V) Construye una matriz cuadrada de orden N con el vector V en su diagonal
principal.
triu(A) Extrae la parte triangular superior de A anulando el resto
tril(A) Extrae la parte triangular inferior de A anulando el resto
rot90(A) Rota una matriz 90

contra las agujas del reloj


rot90(A, k) Rota una matriz k*90

contra las agujas del reloj


fliplr(A) Rota las columnas de izquierda a derecha
flipud(A) Rota las filas de arriba hacia abajo
reshape (A, m, n) Devuelve una matriz de orden m*n cuyos elementos son tomados por
columna de A. Si A no tiene m*n elementos se produce un error.
Un ejemplo sera:
B = [ones(3) zeros(3, 2); zeros(2, 3) 4*eye(2)] B

1
]
1
1
1
1
1
1
1 1 1 0 0
1 1 1 0 0
1 1 1 0 0
0 0 0 4 0
0 0 0 0 4
2.7 Instruccin de asignacin
La sintaxis de una instruccin de asignacin es
Variable = expresin [; ]
La evaluacin de una expresin produce una matriz que se muestra en la pantalla y se asigna a
una variable para su uso futuro.
Si se omiten el nombre de la variable y el signo =, se crea automticamente una variable con el
nombre ans (respuesta).
>>1900/81 produce
ans =
23.4568
Si la expresin es demasiado larga o complicada, se puede continuar en la prxima lnea
escribiendo 3 ms puntos luego del operador aritmtico. Veamos.
S = 1 - 1/2 + 1/3 - 1/4 + 1/5 -.....
1/6 + 1/7;
- 13 -
INTRODUCCIN AL MATLAB
2.8 Operaciones con arreglos u operaciones punto.
Se trata de operaciones trmino a trmino.
La suma y la resta son claras, pues estas operaciones con matrices son as: trmino a trmino.
El producto de arreglos o el producto de dos matrices trmino a trmino se denota, por A.*B.
Las divisin A./B produce una matriz cuyos elementos son los cocientes de los elementos
correspondientes de A y B, es decir, a(i, j) / b(i, j).
La divisin A.\B produce lo mismo pero b(i, j) / a(i, j).
La potencia se denota por .^
Veamos un ejemplo:
x = [1 2 3];
y =[4 5 6];
z = x .^ y produce z = [1 32 729]
El exponente puede ser un escalar
z = x .^2 produce z = [1 4 9]
Matriz Vaca
x = [ ] crea una matriz vaca.
2.9 Polinomiales
poly permite encontrar los coeficientes del polinomio caracterstico de una matriz, por ejemplo:
A = [1 2 3
4 5 6
7 8 9];
p = poly (A) produce
p = [1 -15 -18 0]
Para encontrar las races de la ecuacin caracterstica:
r = roots (p)
r =
16. 1168
- 1. 1168
- 14 -
INTRODUCCIN AL MATLAB
0
Existen otras funciones:
polyval (p, x) Permite calcular el polinomio, cuyos coeficientes son los elementos del
vector p, para el valor de x.
conv(p1, p2) Obtiene el producto de los polinomios p1 y p2.
deconv(p1, p2) Obtiene el cociente de los polinomios p1 y p2.
polyfit(x, y, n) Ajusta una funcin polinomial de orden n al conjunto de puntos (x, y).
Se obtiene un vector con los coeficientes de la funcin.
- 15 -
INTRODUCCIN AL MATLAB
Captulo 3. Ficheros en MATLAB
MATLAB tiene cuatro tipos de ficheros para almacenar la informacin:
m-files. Son ficheros de texto ASCII estndares con extensin .m. Existen dos tipos de estos
ficheros: ficheros comandos (script files) y ficheros funciones (function files).
mat-files. Son ficheros de datos binarios, con extensin .mat. Estos son creados por MATLAB
cuando el usuario graba los datos con el comando save nombre del fichero. Si no se pone el
nombre del fichero se asume el nombre matlab.mat. Estos ficheros pueden ser cargados por
MATLAB con el comando load.
Muchos de los programas escritos en MATLAB son salvados como m-files. Todas las
funciones estndares (built-in) son m-files.
Hay muchas formas de cargar y almacenar datos en MATLAB. La va ms directa es el uso de
los comandos load y save.
El comando save es usado para salvar todo el espacio de trabajo o una seleccin de las variables
en un fichero llamado Mat-file. Los ficheros-Mat (Mat-file) son escritos en un formato binario
con precisin de 16 bits. Tambin es posible escribir los ficheros-Mat en formatos de ASCII de
16 y 8 dgitos con argumentos opcionales. Estos ficheros siempre tendrn extensin .mat. Los
datos almacenados en estos ficheros pueden ser cargados en el espacio de trabajo de MATLAB
a travs del comando load. A continuacin se muestran ejemplos del uso apropiado de estos
comandos.
Ejemplos:
save misdatos.mat x y almacena las variables x y y en el fichero misdatos.mat
save nuedatos rx ry rz almacena las variables rx, ry, rz en el fichero nuedatos.
MATLAB aade automticamente la extensin .mat a los
ficheros creados con este comando.
save datox.dat x -ascii salva la variable x en el fichero xdata.dat en un formato ASCII
de 8 dgitos.
save salva todo el espacio de trabajo en el fichero matlab.mat
load misdatos carga en el espacio de trabajo las variables salvadas en el
fichero misdatos.dat.
load carga las variables almacenadas en el fichero por defecto
matlab.mat
Los ficheros con datos tipo ASCII pueden ser cargados en el espacio de trabajo de MATLAB,
como una matriz rectangular de elementos numricos, en este caso MATLAB crea una variable
cuyo nombre coincidir con el nombre del fichero diary-files.
- 16 -
INTRODUCCIN AL MATLAB
Otra forma de salvar o recuperar lo realizado en una sesin de trabajo es usando el comando
diary. Esto permite almacenar en un fichero editable todos los comandos y funciones
utilizados en una sesin de MATLAB. Como salida puede ser utilizado un nombre de fichero
con cualquier extensin.
Para esto lo primero que hay que hacer es teclear diary seguido del nombre del fichero, por
ejemplo, diary seccion1.out. Despus de esto todos los comandos y funciones que sean
llamados, las sealizaciones de error, en caso de que stas existan, las respuestas de MATLAB,
es decir, todo, ser almacenado en este fichero, hasta tanto se termine la sesin o se teclee diary
off. Es posible adicionar cualquier otra sesin y para esto se teclea diary on, a partir de aqu
todas las operaciones que se realicen sern aadidas al fichero ya existente.
Este comando es muy til, ya que a travs de l es posible recordar o repetir los comandos
empleados en una sesin anterior. Adems, el fichero creado podr ser editado en cualquier
editor de textos e, incluso, puede ser convertido en un fichero .m (m-file), siempre que se
eliminen las lneas de error o todos los comandos y funciones que no sean necesarios para el
fichero m-file que se desee crear.
Mex-files. Son ficheros con extensin .mex y pueden ser llamados por los lenguajes Fortran y
C. El uso de estos ficheros requiere de alguna experiencia con el MATLAB y alguna paciencia.
3.1 Ficheros de comandos
En este captulo no trataremos los ficheros funcin, a los que le dedicaremos un captulo aparte.
Es claro que MATLAB se usa ms comnmente en el modo comando. Sin embargo es posible
ejecutar una secuencia de comandos almacenados en un fichero. Juntos, estos dos modos de
trabajo, constituyen un ambiente poderoso de trabajo.
Un fichero en disco, que contiene instrucciones del MATLAB, se llama fichero .m (punto m),
pues la extensin es sa. Se crea accediendo al editor de MATLAB usando la opcin new de
file.
Los ficheros .m pueden contener, a su vez, referencias a otros ficheros .m.
Funcin input

Para leer un dato
n = input ('Teclee el nmero de ..... ').
MATLAB imprime en la ventana de comandos la cadena, Teclee el nmero ..., espera recibir
un dato por teclado y lo almacena en la variable n. Si se desea leer una cadena de caracteres se
debe escribir:
n = input ('Teclee .. ..... ', 's')
- 17 -
INTRODUCCIN AL MATLAB
Funcin disp
disp (x) imprime la matriz x en pantalla sin imprimir el nombre.
Si x es un texto lo imprime. Si se desea imprimir ms de un parmetro, estos deben formar parte
de un vector y ser ambos cadenas. Veamos
A=2;
disp (['El resultado es ', num2str(A)])
num2str(A) convierte A a cadena y se imprime en pantalla
El resultado es 2
Ejemplo 1. Ejecutamos la opcin new de file y nos situamos en el editor de MATLAB y ah
escribimos:
% Esto es una prueba
wt = 0:0.1:4*pi;
y = sin (wt);
plot (wt, y) % traza la grfica del seno(x) desde cero a 4 radianes.
Usando la opcin save de file, de la ventana del editor, podemos grabar el fichero con el
nombre, por ejemplo, grafsin.m
El smbolo % significa que todo lo que se escriba a la derecha de l es un comentario. Aunque
MATLAB ignora los comentarios, forman parte del fichero.
Si en la ventana de comandos escribimos ahora el comando grafsin se obtendr una sinusoide
de 0 a 4 radianes.
Ejemplo 2. Escribir un programa que calcule la hipotenusa de un tringulo rectngulo
conociendo sus catetos.
%Hipotenusa
a = input ('Teclee el valor de un cateto ');
b = input ('Teclee el valor del otro cateto ');
c = sqrt (a^2+b^2);
disp (['La hipotenusa mide ', num2str(c)]);
Es importante conocer que la ejecucin de help nombre de fichero imprime en la ventana de
comandos las primeras lneas de comentarios.
Hay que tener cuidado con el nombre de las variables que se utilicen en el cuerpo del fichero, ya
que pasan a formar parte del espacio de trabajo y, de existir las mismas, tomaran un nuevo
valor.
- 18 -
INTRODUCCIN AL MATLAB
3.2 Establecimiento del camino de bsqueda
Matlab ya tiene establecidos los caminos de bsqueda de los ficheros propios para su ejecucin
o llamada. Tambin ofrece la carpeta work para que el usuario pueda almacenar sus ficheros.
Es posible, adems, crear otras carpetas y entonces se debe establecer el camino
correspondiente. Esto se puede realizar utilizando la opcin Set Path del submen File para
abrir la ventana del Path Browser. En esta ventana se puede agregar un camino de bsqueda
ejecutando la opcin Add to Path del submen Path.
Tambin se puede establecer el camino desde la ventana de comandos usando el comando
addpath.
Veamos un ejemplo. Si el usuario cre una carpeta con el nombre carpeta dentro de la carpeta
MATLAB y ah almacena sus ficheros, debe establecer el camino de la siguiente forma:
addpath c:\matlabr11\carpeta
Este camino establecido valdr durante esa sesin de trabajo, pues al terminarla no se mantiene.
Si se quisiera mantener para sesiones futuras se debe ejecutar la opcin Save Path del submen
File del Path Browser o, desde la ventana de comandos, ejecutar save path.
echo
Es un switch. Normalmente cuando se ejecuta un fichero .mo los comandos no se imprimen en
pantalla, aunque a veces puede ser conveniente que se muestren para corregir errores. Para
ficheros comandos echo on muestra los comandos hasta que se encuentre un echo off.
echo nombre de fichero cambia el estado de echo en ese fichero.
echo on all muestra todos los comandos del fichero.
echo off all oculta los comandos.
pause Produce una pausa hasta que se oprime retorno.
- 19 -
INTRODUCCIN AL MATLAB
Captulo 4. Funciones estndares (built in)
4.1 Funciones elementales matemticas
Se llaman tambin de arreglos, pues si operan con matrices lo hacen trmino a trmino.
Ejemplo:
C = sin(pi*B) Si B es una matriz produce una matriz C en que cada elemento es el seno de
por el correspondiente de B.
sqrt Raz cuadrada
abs Valor absoluto, si es complejo devuelve la magnitud, si es un texto devuelve
los valores en ASCII.
conj Compleja conjugada
fix Parte entera
imag Parte imaginaria
real Parte real
round Redondea al entero inferior
sign Signo de funcin
rem Resto de la divisin Ej. rem(5,2) = 1
sin Seno
cos Coseno
tan Tangente
asin Arcoseno
acos Arcocoseno
atan Arcotangente
atan2 Arcotangente en los cuatro cuadrantes
exp Exponencial
log Logaritmo natural
log10 Logaritmo vulgar
Estas funciones operan sobre un escalar o a cada elemento de una matriz.
4.2 Funciones que manipulan datos
size(A) devuelve un vector de dos elementos que contiene el nmero de filas y el nmero de
columnas de la matriz A.
length (v) devuelve la longitud de un vector v.
- 20 -
INTRODUCCIN AL MATLAB
Las funciones siguientes devuelven un escalar si el argumento es un vector. Si es una matriz,
devuelven un vector fila con las operaciones de las columnas.
max Valor mayor
min Valor menor
sum Suma
cumsum Suma acumulativa
prod Producto de los elementos
cumprod Producto acumulativo
mean Valor medio
std Desviacin estndar
median Devuelve el valor central
sort Ordena de forma ascendente.
4.3 Operadores de relacin
< Menor que
<= Menor o igual que
= = igual a
~ = desigual a
> = mayor o igual a
> mayor que
Esta comparacin se hace elemento a elemento y resulta en una matriz donde sus elementos son
0 cuando es falso y 1 cuando es verdadero.
Una funcin interesante y muy til es la funcin find.
Su sintaxis es find (condicin) y encuentra los ndices de la matriz donde se cumple la
condicin.
Supongamos:
A = [2 4 5 7 4]
B = find (A/2 = = fix (A/2) )
Dos funciones tiles para generar vectores son:
linspace(a, b, n) Genera un vector linealmente espaciado de a hasta b con n puntos.
logspace(a, b, n) Genera un vector con espaciado logartmico desde 10
a
hasta 10
b
de
longitud n.
4.4 Operadores lgicos
& and
| or
- 21 -
INTRODUCCIN AL MATLAB
~ not
xor or exclusivo
Estas operaciones, igual que las de comparacin, producen vectores y matrices con elementos
del tipo 0 - 1, del mismo tamao que los operandos, con uno si la condicin es verdadera y cero
si es falsa.
Ejemplo:
x = [0 5 3 7] y = [ 0 2 8 7]
m = (x > y) & (x > 4) m = [0 1 0 0]
n = x | y n = [0 1 1 1]
Est claro que, como el resultado de estas operaciones es un vector con elementos del tipo 0-1,
ste se puede usar para extraer los elementos deseados. Por ejemplo:
x((x >y) & (x > 4))
ans =
5
4.5 Tratamiento de cadenas de caracteres.
Todas las cadenas de caracteres son entradas al MATLAB entre apstrofos, o sea, 'cadena'.
MATLAB manipula cualquier cadena como un vector cuyos elementos van a ser los caracteres
que forman la cadena en cuestin.
Por ejemplo, si tecleamos:
mensaje = 'Buenas noches'
entonces MATLAB crea un vector fila de 13 elementos (los espacios existentes en la cadena se
cuentan como caracteres). De ah, que para crear un vector columna con elementos de tipo
cadena, es imprescindible que los mismos tengan el mismo nmero de caracteres. Por ejemplo,
el comando
nombres = ['Juan'; 'Raul'; 'Ania'; 'Magy'],
Crea un vector columna con un elemento por fila, siendo para MATLAB la variable nombres,
una matriz de 4x4.
En caso de que sea necesario crear vectores columna cuyos elementos sean cadenas de
longitudes diferentes, se le adicionar a cada elemento (cadena) que as lo necesite, tantos
espacios en blanco como se requiera para lograr que la longitud de todos los elementos sea la
misma.
- 22 -
INTRODUCCIN AL MATLAB
Una forma ms fcil de lograr esto es utilizando el comando str2mat, el cual convierte una
cadena a matriz.
str2mat(s1, s2, s3, ...,) coloca cada argumento s1, s2,... en una fila y crea una matriz cadena,
adicionndole a cada fila el nmero de espacios en blanco que necesite.
Ejemplo:
equipos = str2mat ('monitor', 'impresora', plotter')
eval Calcula el valor de una cadena numrica.
t = '3+2';
eval (t) produce
ans =
5
- 23 -
INTRODUCCIN AL MATLAB
Captulo 5. Subprogramas. Fichero funcin
Fichero funcin. Es un fichero que contiene una funcin y, por tanto, se considera un
subprograma. Se escribe en el mismo ambiente del fichero comando. Las funciones en
MATLAB son como los procedimientos en Pascal y las funciones en C.
El encabezamiento tendra la siguiente sintaxis:
function [variables de salida] = Nombre de funcin(variables de entrada)
Veamos algunos detalles sobre las funciones.
1. En la primera lnea se declaran el nombre de la funcin y los argumentos de entrada y de
salida. Sin esta lnea se tratara de un fichero comando.
2. Las primeras lneas del fichero .m (despus de la declaracin de funcin) se imprimirn en
pantalla si se pide ayuda acerca de l, es decir, las que estn precedidas por %.
3. Las variables que se usen, incluyendo las del cuerpo de la funcin, son locales.
4. La transferencia de los parmetros de entrada es por valor (por tanto pueden ser constantes)
y los de salida por nombre.
5. Pueden existir varios parmetros de entrada y varios de salida.
6. El nombre del fichero tiene que coincidir con el nombre de la funcin.
7. Cuando se tenga una sola variable de salida, no se requiere que sta se encierre entre
corchetes en la lnea de definicin de la funcin, pero cuando se tengan varias variables de
salida esto si es necesario. Pueden no existir variables de salida.
Ejemplo 1. Escribir una funcin que calcule la hipotenusa de un tringulo rectngulo.
function c = pit (a, b)
%Se calcula segn el teorema de Pitgoras
c = sqrt (a^2+b^2);
Con esta funcin debo crear un fichero con el nombre pit.m.
Si ahora escribo pit(3, 4) obtengo ans = 5.
Evite la coincidencia entre las funciones que usted escribe y las funciones estndares del
MATLAB. Una forma prctica de averiguar esto es utilizar el comando exist ('nombre') el cual
devuelve 0 si no encuentra nada con ese nombre.
- 24 -
INTRODUCCIN AL MATLAB
Captulo 6. Instrucciones estructuradas
6.1 Instruccin if
if <condicin>
< secuencia de instrucciones 1>
[else
< secuencia de instrucciones 2>]
end
Si la condicin es cierta se ejecuta la secuencia de instrucciones 1, si es falsa se ejecuta (de
existir) la secuencia de instrucciones 2. Los corchetes indican que es opcional la escritura.
Ejemplo. Escribir una funcin que calcule el promedio de cada columna de una matriz.
function y = mean (x)
% Se trata del promedio. Para vectores devuelve el promedio, que es un escalar.
% Para matrices devuelve un vector fila que contiene los promedios de cada columna.
[m, n] = size (x);
if m = = 1
m = n ;
end
y = sum(x)/m;
6.2 Instruccin switch
switch expresin del switch
case expresin
<secuencia de instrucciones 1>
case { expresin1, expresin2,...}
secuencia de instrucciones 2
........
[otherwise
secuencia de instrucciones]
end
La expresin del switch puede ser de cualquier tipo, incluso cadena. Note que si hay ms de una
expresin deben escribirse entre llaves.
Ejemplo. Elaborar un programa que trace una sinusoide con la opcin 1 y, con las opciones 2 y
3, trace una cosinusoide.
disp('1. Sinusoide');
disp('2. Cosinusoide');
disp('3. Cosinusoide');
n = input ('Teclee la opcin ');
- 25 -
INTRODUCCIN AL MATLAB
t = 0:0.01:9;
switch n
case 1
plot(t, sin(t));
case {2, 3}
plot(t, cos(t));
otherwise
disp ('Opcion incorrecta');
end
6.3 Instruccin for
for <variable del for> = <valor inicial>:[<incremento>:]<valor final>
<secuencia de instrucciones>
end
Si el incremento no se especifica MATLAB lo supone 1.
Ejemplo. Crear una matriz de orden m*n cuyos elementos estn determinados por a(i, j) = 1/
(i+j-1)
m = input('Teclee el nmero de filas ');
n = input('Teclee el nmero de columnas ');
for i = 1: m
for j = 1:n
a(i, j) = 1/(i+j-1);
end
end
6.4 Instruccin while
while <condicin>
< secuencia de instrucciones>
end
Ejemplo: Si existe un vector a de n elementos, averiguar si alguno de ellos es cero.
n = input('Cantidad de elementos de a ');
i=1;
while (a(i) ~ = 0) & (i < n)
i = i+1;
end
if a(i) = = 0
disp('Hay un cero al menos');
else
disp('No hay ceros');
end
- 26 -
INTRODUCCIN AL MATLAB
6.5 Estructuras o registros en MATLAB
En MATLAB existen tambin las estructuras (struct) de C o los registros del Pascal. Un registro
es una estructura con varios componentes o campos que pueden ser de diferentes tipos. En
MATLAB la estructura alumno se crea estableciendo un objeto de dicha
estructura. A diferencia de otros lenguajes de programacin, no hace falta
definir previamente el modelo o patrn de la estructura. Una posible forma de
hacerlo es crear uno a uno los distintos campos, como en el ejemplo siguiente:
Ejemplo 1
alumno.nombre = 'Pedro'
alumno =
nombre: 'Pedro'
alumno.edad = 21
alumno =
nombre: 'Pedro'
edad: 21
La forma de referirse a algn campo es con el punto como se ha mostrado.
Ejemplo 2. Escribir un programa que lea un arreglo de registros de los alumnos del aula, cada
uno con tres campos: nombre, nota y edad. Encontrar el nombre del estudiante ms viejo.
%Encuentra el nombre del alumno mayor de un arreglo de registros
n = input('Cantidad de alumnos ');
for i = 1: n
alumno(i).nombre = input('Teclee el nombre ');
alumno(i).nota = input('Teclee la nota ');
alumno(i).edad = input('Teclee la edad ');
end;
m = alumno(1).edad;
for i = 2:n
if m<alumno(i).edad
m = alumno(i).edad;
p = i;
end
disp(alumno(p).nombre)
end
Una desventaja del uso de registros en MATLAB es que se pierden las bondades que posee con
el trabajo de matrices. Note que fue necesario usar un algoritmo para buscar el ms viejo y no se
pudo usar, por ejemplo, la funcin max.
- 27 -
INTRODUCCIN AL MATLAB
Captulo 7. Grficos
7.1 Grficos de una lnea
Existen varios tipos de grficos dependiendo del papel usado.
plot(x, y) grfica lineal x vs. y.
loglog(x, y) grfica loglog x vs. y
semilogx(x, y) grfica eje x logartmico
semilogy(x, y) grfica eje y logartmico
polar (theta, rho) grfica polar
Se pueden adornar los grficos.
title ('Texto') Para ponerle un ttulo a una grfica.
xlabel ('Texto') Nombre del eje de las abscisas.
ylabel ('Texto') Nombre del eje de las ordenadas.
grid Traza una malla.
text (x, y, 'Texto') Escribe Texto en las coordenadas (x, y) del grfico.
gtext ('Texto') Escribe Texto en el grfico donde se d un click con el mouse.
leyend('Trazo1', ) Escribe la leyenda, cual es la correspondencia de cada uno de los trazos.
grid funciona como un switch. Si est puesta la malla la quita y viceversa. grid on la pone y
grid off la quita. Existen muchos comandos en MATLAB que funcionan de esta forma.
Si y es un vector, entonces plot (y) traza la grfica de y contra el ndice de y.
Si x y z son vectores de la misma longitud, entonces plot (x, z) traza la grfica de z contra x.
Por ejemplo
wt = 0 : 0.1 : 4 * pi;
y = sin(wt);
plot(wt, y) %Produce la grfica del sen(wt) de 0 a 4*pi radianes.
hold Mantiene o no la ventana grfica para trazar otro grfico. Es un switch, de manera que
existen hold on y hold off.
figure Permite abrir otra ventana grfica y le pone el nmero consecutivo. Se puede abrir otra
ventana grfica y asignarle el nmero n con figure(n).
7.2 Grficos de varias lneas
Si y es una matriz y x es un vector, plot(x, y) produce un juego de grficas de las filas o
columnas de y contra x. El hecho de que escoja filas o columnas depende de cules tienen el
mismo nmero de elementos que el vector x. Si y es cuadrada se toman las columnas.
- 28 -
INTRODUCCIN AL MATLAB
Si y es un vector y x es una matriz se trazan las grficas de y contra cada columna o fila de x.
Si son matrices del mismo orden, se trazan las grficas columnas contra columnas.
Si tenemos plot(y) siendo y una matriz, se obtienen las grficas de cada columna contra su
ndice.
Otra forma de hacer grficos de varias lneas es:
plot (x
1
, y
1
, x
2
, y
2
, ..... , x
n
, y
n
)
sta tiene la ventaja de que se pueden obtener las grficas de parejas de vectores de diferentes
tamaos en la misma ventana grfica.
Los tipos de lneas se pueden definir:
plot(x, y, 'x') traza la grfica con el smbolo x.
plot(x1, y1, ': ' , x2, y2, '+') dibuja la primera con : y la segunda con +.
Otros smbolos usados pueden ser: -, --, :, ~, . , +, *, o, x.. Puede agregrsele otro carcter que
defina el color. Por ejemplo plot (x, y, 'y+'). Dibuja y contra x con el smbolo + y con el color
yellow. Los colores que se pueden usar son:
y - yellow m - magenta c - cyan g - green
r - red b - blue w - white k - black
Si y es complejo plot(y) es equivalente a plot(real (y), imag(y)). De otra manera se ignora la
parte imaginaria.
subplot Permite trazar varias grficas en la misma ventana de grficos.
subplot(m, n, k) define una matriz de ventanas de m filas y n columnas, es decir, dibuja m*n
grficas en la misma ventana. k define en cul de ellas se dibuja contando por filas.
Concretamente, si se quiere dibujar en la segunda fila, tercera columna de una matriz 2*4, se
trata entonces de k = 7. Ms adelante se plantear un ejemplo.
Escalado manual de los ejes
El comando axis (v) permite establecer una escala, donde v es un vector con los 4 parmetros
xmin, xmax, ymin, ymax.
Ejemplo:
axis([0 10 0 25]);
- 29 -
INTRODUCCIN AL MATLAB
7.3 Grficas en el espacio
plot3(x, y, z) si x, y, z son vectores, traza una lnea en el espacio tridimensional cuyos puntos
tienen como coordenadas los elementos de x, y, z.
Un ejemplo sera:
t = 0:pi/50:10*pi;
plot3(sin(t), cos(t), t);
Con plot3 se pueden realizar muchas de las acciones que se realizan con plot, por ejemplo, el
trazado de varias lneas.
mesh permite el trazado de superficies tridimensionales.
meshgrid establece el dominio de definicin en el plano xy.
Un ejemplo sera:
[x, y] = meshgrid (-2: .2: 2, -2: .2: 2);
z = x .* exp(-x. ^ 2 - y. ^2);
mesh (z);
7.4 Borrado de textos en grficos
Es algo complicado. Es necesario obtener el valor de retorno del comando con el cual se ha
creado y luego ejecutar el comando delete con ese valor. Veamos un ejemplo.
Supongamos que hemos realizado una grfica con los comandos siguientes:
t = 0:0.1:10;
plot (t, sin(t));
xlabel ('Tiempo');
ylabel ('Respuesta');
Si ahora deseramos borrar 'Tiempo', como indicador del eje x, debemos escribir:
v = xlabel ('Tiempo');
delete(v);
Por esta razn se recomienda que, cuando se escriba un texto en una grfica, se realice
asignndole el valor de retorno a una variable, teniendo en cuenta la posibilidad del borrado
posterior, pues sera muy difcil hacerlo cuando la escritura se realiz con comandos, por
ejemplo, como text o gtext, es decir, en lugar de escribir text(2, 3, 'velocidad') se recomienda
escribir v = text(2,3,'velocidad').
se pueden realizar muchas acciones sobre los grficos directamente desde la ventana grfica,
por ejemplo, facilidades de edicin, salvar, imprimir, etc.
- 30 -
INTRODUCCIN AL MATLAB
Captulo 8. Algunos ejemplos
8.1 Solucin de sistemas lineales.
Para crear modelos lineales, invariantes (LTI) y continuos existen en MATLAB, aunque se
pueden crear a base de sus componentes, varias formas compactas, de las que veremos algunas.
tf. Funcin de Transferencia. (Cociente de polinomios en funcin del operador de Laplace).
ss Representacin en Espacio de Estado.
zpk Polos, Ceros y Ganancia. (Cociente de polinomios en factores polos, ceros y ganancia).
Veremos algunos ejemplos de aplicacin general, pero de particular importancia en el control
automtico.
step es un comando que permite encontrar un vector con la respuesta a escaln.
y = step(num, den, t)
num y den son los vectores de los coeficientes del numerador y el denominador respectivamente
de la funcin de transferencia en orden descendente de s y t es un vector con los valores del
tiempo.
step(num, den) traza la grfica de la respuesta directamente y MATLAB asume el tiempo.
Ejemplo 1. Se desea conocer la respuesta a escaln unitario de un sistema con funcin de
transferencia
G(s) = 10 / (s
2
+ 2s + 2)
num = [10];
den = [1 2 2];
t = 0: 0.1: 10;
y = step (num, den, t);
plot(t, y)
title('Respuesta a escaln')
xlabel('t')
ylabel('y')
grid
Est claro que las primeras 5 lneas se pudieron escribir segn:
t = 0:0.1:10;
plot (t, step([10], [1 2 2], t))
Se pudo encontrar la respuesta a impulso unitario con la funcin impulse.
lsim Permite calcular respuestas a otro tipo de seales de entrada.
- 31 -
INTRODUCCIN AL MATLAB
Ejemplo 2.
Supongamos la funcin de transferencia siguiente: G(s) = (s + 1) / (10s + 1)
g = tf([1 1],[10 1]);
t = 0: 0.1: 20;
x = sin (t);
y = lsim (g, x, t);
plot (t, y)
Algunas formas de conversin de modelos de sistemas.
tf2zp Convierte la funcin de transferencia normal a su expresin en ceros, polos y ganancia.
[z, p, k] = tf2zp (num, den)
Obtiene los ceros, los polos y la ganancia de la funcin de transferencia definida por num y den.
De forma inversa zp2tf obtiene los coeficientes del numerador y el denominador de la funcin
de transferencia en polos y ceros.
[num, den] = zp2tf (z, p, k) donde z y p son vectores y k es un escalar.
ss2tf Convierte el modelo en el espacio de estado a funcin de transferencia.
[num, den] = ss2tf (A, B, C, D, iu)
Se obtienen el numerador y el denominador de la funcin de transferencia conociendo las
matrices A, B, C y D del modelo de estado para la entrada i-sima.
Adems existen ss2zp, zp2ss y tf2ss.
Veamos algunos ejemplos
Ejemplo 3. Se desea obtener la respuesta del siguiente sistema para una entrada pulso dada por:
1 s s
2
) s ( G
2
+ +

a una entrada

'


<
<

2 t 5 . 0
2 t 0 2
0 t 0
) t ( u
%Respuesta a un pulso en t=0
g = tf([2],[1,1,1]);
t = 0:0.01:15;
- 32 -
2
2
0.5
t
u(t)
INTRODUCCIN AL MATLAB
u = 2*ones (size (t));
for i = find (t= =2): length (t)
u(i)=0.5;
end
y = lsim (g, u, t);
plot (t, u, t, y);
grid
axis ([0 15 0 4]);
Como en MATLAB existe la funcin stepfun(t, t0), que genera un escaln unitario en t0, se
podra resolver el problema de la forma siguiente:
t = 0:0.01:15;
y1 = 2*stepfun(t, 0);
y2 = 1.5*stepfun(t, 2);
y = y1-y2;
plot(t, y);
Ejemplo 4. Generalizar el programa anterior obteniendo la respuesta de cualquier sistema
definido por su funcin de transferencia a una funcin del tipo del ejemplo anterior, como se
muestra en la figura siguiente:
function y = respulso (num, den, a, b, c, d)
%num y den son el numerador y el denominador de la funcin de transferencia
%respectivamente.
%a es el peso inicial del pulso.
%b es el peso final del pulso.
%c es la duracin del pulso.
%d es el tiempo de simulacin.
t = 0:d/100:d;
u = a*ones (size (t));
for i = min (find (t>=2)):length (t)
u(i)=b;
end
y = lsim (num, den, u, t);
plot (t, u, t, y);
grid
- 33 -
d c
a
b
t
u(t)
INTRODUCCIN AL MATLAB
Si se hubiera escrito lsim (num, den, u, t) en la lnea 6, se hubiera trazado la grfica
directamente. Ahora se puede usar la funcin respulso dando los 6 parmetros: num, den, a, b, c
y d. Por ejemplo
y = respulso ([1 1], [1 2 1], 5, 1, 2, 20);
Ejemplo 5. Escribir un fichero comando para analizar la respuesta de un sistema lineal de 2do.
orden, con funcin de transferencia G(s)=1/(s
2
+as+1), a un escaln unitario, variando el
parmetro a.
%Anlisis de la respuesta de un sistema de 2do. orden, con funcin de transferencia %G(s)=1/
(s
2
+as+1), a un escaln unitario, variando el parmetro a.
num = [1];
t = 0:0.1:30;
b = 0;
for a = 0.5:0.5:6
b = b+1;
den = [1 a 1];
subplot (3, 4, b);
y= step(num, den, t);
plot (t, y);
axis ([0 30 0 2]);
grid;
text (5,1.5,'a=');
text (11,1.5, num2str(a));
end
Ejemplo 6. Encontrar la respuesta a escaln del circuito RLC que se muestra, suponiendo el
voltaje e como la entrada y el voltaje en el condensador como la salida.
La funcin de transferencia del circuito sera:
- 34 -
i
C
L R
e
Circuito RLC
INTRODUCCIN AL MATLAB
1 s RC s LC
1
) s ( E
) s ( V
2
c
+ +

Si suponemos R = 1 , C= 1f, L = 1h podemos escribir


t = 0:0.1:10;
sys = tf([1],[1 1 1]);
plot (t, step (sys, t));
grid
Ejemplo 7. Resolver el problema anterior usando el modelo en el espacio de estado.
Si escribimos el modelo matemtico segn:
C
) t ( i
dt
dv
) t ( e
L
1
) t ( v
L
1
) t ( i
L
R
dt
di
c
c

+

y suponemos todos los parmetros unitarios se obtendra el modelo de estado segn:
1
]
1

0 1
1 1
A

1
]
1

0
1
B
[ ] 1 0 C
[ ] 0 D
t = 0:0.1:10;
A=[-1 1;1 0];
B=[1;0];
C=[0 1];
D=[0];
sys = ss (A, B, C, D);
y = step (sys, t);
plot (t, y);
grid
Veremos algunos ejemplos ms donde introduciremos algunos comandos.
Ejemplo 8. Dado el sistema cuya funcin de transferencia se describe ms abajo, determine los
polos y los ceros y sitelos en el plano complejo s.

8 . 0 s 5 . 2 s 4 s 3 s
7 s 5 s 3
) s ( G
2 3 4
2
+ + + +
+ +

numG = [3 5 7];
denG = [1 3 4 2.5 0.8];
- 35 -
INTRODUCCIN AL MATLAB
[z, p, k] = tf2zp (numG, denG); % z, p y k son los ceros, polos y ganancia respectivamente.
pzmap (numG, denG); % Traza los ceros y los polos en el plano s.
% pzmap (p, z) Tiene el mismo resultado que la lnea anterior.
z y p son los vectores de los ceros y los polos respectivamente.
Ejemplo 9. Dado el sistema cuya ft se muestra, encuentre la expansin en fracciones parciales y
su respuesta a impulso.
1 s 5 s 4 s 2
2 s 3
) s ( G
2 3
+ + +
+

%Expansin en fracciones parciales y respuesta a impulso.


num = [3 2];
den = [2 4 5 1];
[z, p, k] = tf2zp (num, den);
[res, pol, otro] = residue (num, den); % Se obtienen los residuos, los polos y posible %trmino
no fraccionario.
impulse (sys); % Se obtiene directamente la grfica de la respuesta a impulso.
MATLAB permite establecer, por comandos, la realimentacin negativa.
Ejemplo 10. Encontrar la respuesta a escaln del sistema que se muestra.

donde

2 s 3 s 5
1 s 4
) s ( G
2
+ +
+

y
11 s 4 s
6 s
) s ( H
2
+ +
+

numG = [4 1]; denG = [5 3 2];


numH = [1 6]; denH = [1 4 11];
[numT, denT] = feedback (numG, denG, numH, denH);
step (numT, denT);
ltiview
Es un comando que permite acceder a un interfaz grfico y visualizar diferentes respuestas de
sistemas LTI (Linear Time Invariant) y sus parmetros ms importantes. Debemos definir
primeramente el sistema, por ejemplo, sys = tf (num, den) y luego ejecutar ltiview.
- 36 -
Y(s) U(s)
-
+
G(s)
H(s)
INTRODUCCIN AL MATLAB
Las respuestas pueden ser a escaln (step), a impulso (impulse), diagrama de Bode (bode),
diagrama de Niquist (nyquist), diagrama de Nichols (nichols), diagrama Sigma (de valores
singulares), diagrama de polos y ceros ( Pole-Zero), respuesta a otra entrada (lsim) y respuesta
de un sistema en el espacio de estado slo con condicin inicial (initial).
8.2 Solucin de ecuaciones diferenciales de manera numrica.
Se pueden resolver, de manera numrica, ecuaciones diferenciales de primer orden del tipo y=
f(t, y) con el juego de funciones ode. El mtodo de integracin de menor orden es el ode23 y
MATLAB tiene muchos otros. Veamos un ejemplo.
Ejemplo 1.
Se quiere resolver la ecuacin diferencial y = y + 4, con y(0) = 1, en el intervalo [0 2].
Creamos la funcin f.m
function yprima = f (t, y)
yprima = y+4;
Ahora podemos ejecutar los comandos
[t, y]=ode23 ('f ', [0 2], 1); % Resuelve la ecuacin en el intervalo [0 2] con y(0) = 1. Se
%obtienen dos vectores: y, que es el vector solucin y t, que es el vector del tiempo.
% La solucin grfica podra verse con el prximo comando.
plot (t, y)
Se hubiera podido graficar directamente si hubiramos ejecutado:
ode23 ('f ', [0 2], 1);
Ejemplo 2.
Encontrar la respuesta al circuito RLC con entrada e y salida v
c
. Las ecuaciones seran:
C
i
v
'
c

;
L
v
L
Ri
L
e
i
c '

Si suponemos todos los parmetros unitarios, las ecuaciones se simplifican:
i v
'
c
;
c
'
v i 1 i
Para resolver este sistema de ecuaciones debemos plantearlo en la forma y'= f(t, y). Haciendo un
cambio de variables segn:
y' (1) = v
c
y(2) = i
- 37 -
INTRODUCCIN AL MATLAB
Las ecuaciones quedaran como
y(1) = y(2)
y' (2) = 1- y(2) - y(1)
Ahora creamos la funcin yprima = f2do (t, y).
function yprima = f2do (t, y)
yprima (1) = y(2);
yprima (2) = 1- y(1) - y(2);
yprima = yprima'; % Esto es producto de que yprima debe ser un vector columna.
Ahora podemos escribir
[t, y] = ode45 ('f2do', [0 10], [0 1]);
plot (t, y)
grid;
gtext ('Vc');
gtext ( 'i');
Se obtendra la grfica de la figura siguiente:
8.3 Solucin simblica de ecuaciones diferenciales.
Se pueden resolver, de manera simblica, ecuaciones diferenciales ordinarias, para lo cual se
usa la funcin dsolve.
Ejemplo 1.
Se desea resolver la ecuacin diferencial y= y+4, sabiendo que y(0) = 1.
Escribimos el comando:
q = dsolve ('Dy = y+4', 'y(0) = 1) % y(0) = 1 es la condicin inicial.
q =

-4+5*exp(t)
- 38 -
INTRODUCCIN AL MATLAB
De no escribirse la condicin inicial la respuesta estara en funcin de una constante.
Ejemplo 2.
Resolver la ecuacin diferencial y + y = 0 con y(0) = 1, y(0) = -1.
q = dsolve ('D2y+Dy = 0', 'y(0) = 1', 'Dy(0) = -1' )
q =

1/exp(t)
Ejemplo 3.
Encontrar la respuesta al circuito RLC con entrada e y salida v
c
y con parmetros unitarios, es
decir, i v
'
c
;
c
'
v i 1 i .
q = dsolve ('DVc = I', 'DI = 1-I-Vc', 'Vc(0) = 0', 'I(0) = 1');
MATLAB almacena los resultados en un registro con dos campos: Vc e I. Para ver el resultado
debemos escribir q.Vc. Con q.I obtendramos la respuesta I(t).
q.Vc

ans =
1+1/3*exp(-1/2*t)*(3^(1/2)*sin(1/2*t*3^(1/2))-3*cos(1/2*t*3^(1/2)))
Ejemplo 4.
Resuelva el mismo ejemplo, pero suponga el modelo segn:
) t ( e ) t ( v
dt
) t ( dv
RC
dt
) t ( v d
LC
c
c
2
c
2
+ + , es decir, 1 ) t ( v
dt
) t ( dv
dt
) t ( v d
c
c
2
c
2
+ +
q = dsolve ('D2Vc+DVc+Vc = 1', 'Vc(0) = 0', 'DVc(0) = 1')

q =

1-exp(-1/2*t)*cos(1/2*t*3^(1/2))+1/3*3^(1/2)*exp(-1/2*t)*sin(1/2*t*3^(1/2))
Para resolver ecuaciones algebraicas se usa la funcin solve.
- 39 -
INTRODUCCIN AL MATLAB
8.4 Integracin numrica
Con el objetivo de introducirnos en algunas otras posibilidades del MATLAB mostraremos un
ejemplo interesante. Supongamos que creamos la funcin siguiente:
function y = prueba(x)
y = 1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6;
Y ahora ejecutamos
x = -1:0.1:2;
plot(x, prueba(x))
Se obtendra la grfica siguiente:
Lo primero que se va a hacer es calcular la integral definida de esta funcin entre dos valores de
la abscisa x. En ingls, al clculo numrico de integrales definidas se le llama quadrature.
Sabiendo eso, no resulta extrao el comando con el cual se calcula el rea comprendida bajo la
funcin entre los puntos 0 y 1 (obsrvese que el nombre de la funcin a integrar se pasa entre
apstrofos, como cadena de caracteres):
area = quad ('prueba', 0, 1)
area =
29.8583
La funcin quad8() utiliza un mtodo de orden superior (Newton-Cotes), mientras que la
funcin dblquad() realiza integrales definidas dobles. Ver el help o los manuales on-line para
ms informacin.
- 40 -
INTRODUCCIN AL MATLAB
8.5 Ecuaciones no lineales y optimizacin
Despus de todo, calcular integrales definidas no es tan difcil. Ms difcil es, desde luego,
calcular las races de ecuaciones no lineales y el mnimo o los mnimos de una funcin.
MATLAB dispone de las tres funciones siguientes:
fzero calcula un cero o una raz de una funcin de una variable
fmin calcula el mnimo de una funcin de una variable
fmins calcula el mnimo de una funcin de varias variables
Se empezar con el clculo de races. Del grfico de la funcin prueba entre -1 y 2 resulta
evidente que dicha funcin tiene dos races en ese intervalo. La funcin fzero calcula una. Cul
es la que calcula? Pues depende de un parmetro o argumento que indica el punto de partida
para buscar la raz. Vanse los siguientes comandos y resultados:
fzero('prueba', -.5)
ans =
-0.1316
fzero('prueba', 2)
ans =
1.2995
En el primer caso se ha dicho al programa que empiece a buscar en el punto -0.5 y la solucin
encontrada ha sido -0.1316. En el segundo caso ha empezado a buscar en el punto de abscisa 2 y
ha encontrado otra raz en el punto 1.2995. Se ven claras las limitaciones de esta funcin. La
funcin fzero() tiene tambin otras formas interesantes:
fzero('prueba', [x1, x2]) calcula una raz en el intervalo x1-x2. Es necesario que la funcin tenga
distinto signo en los extremos del intervalo.
fzero('prueba', x, tol) calcula la raz ms prxima a x con una tolerancia tol para el error.
Ahora se va a calcular el mnimo de la funcin prueba. Defnase una funcin llamada prueba2
que sea prueba cambiada de signo, y trtese de reproducir en el PC los siguientes comandos y
resultados (para calcular mximos con fmin bastara con cambiar el signo de la funcin):
plot(x, prueba2(x))
fmin('prueba2', -1, 2)
ans =
0.3004
fmin('prueba2', 0.5,1)
ans =
0.8927
- 41 -
INTRODUCCIN AL MATLAB
8.6 Integracin simblica
Tambin es posible obtener integrales de manera simblica.
Ejemplo 1.
syms x %Declara x como una variable simblica
int(1/(x^2+1))
ans =
atan(x)
Est claro que se pueden integrar tambin matrices. Veamos el siguiente ejemplo.
Ejemplo2.
syms t a
A = [1 t; sin(t) a];
int (A)
ans =
[ t, 1/2*t^2]
[ -cos(t), a*t]
Se pueden realizar tambin integrales iteradas.
Ejemplo 3.
syms t
q = int (int (t))
q =
1/6*t^3
Se pueden realizar integraciones entre lmites simblicos o constantes.
Ejemplo 4.
syms x a b
int (x, a, b)
ans =
1/2*b^2-1/2*a^2
Ejemplo 5.
int (x, 1, a)
ans =
1/2*a^2-1/2
- 42 -
INTRODUCCIN AL MATLAB
8.7 Transformada de Laplace.
Se puede obtener la transformada de Laplace de funciones del tiempo. De forma asumida la
respuesta se brinda en la variable s. Las variables deben declararse con el comando syms.
Ejemplo 1. Encontrar la transformada de Laplace de f(t) = sen (at).
syms t a
F = laplace (sin(a*t))

F =

a/(s^2+a^2)
Se pueden usar tambin las llamadas funciones sym, tales como Heaviside (escaln) y Dirac
(impulso).
Ejemplo 2. Calcular la transformada de Laplace de f(t) = t
2
u(t-1).
syms t
F = laplace (t^2*sym ('Heaviside (t-1)' ))
F =

exp(-s)/s+2*exp(-s)/s^2+2*exp(-s)/s^3
Se pudiera ejecutar la funcin simplify y obtener una respuesta ms compacta.
simplify (F)

ans =

exp(-s)*(s^2+2*s+2)/s^3
Ejemplo 3. Calcular la transformada de Laplace de f(t) = u(t) u(t-1).
F = laplace (sym ('Heaviside(t) - Heaviside(t-1)' ) ) % t debi declararse como syms

F =

1/s-exp(-s)/s
De igual forma existe la transformada inversa para la cual se usa la funcin ilaplace. Algo
similar existe con Fourier para la que existen las funciones fourier e ifourier. Lo mismo sucede
con la transformada z, pues existen las funciones ztrans e iztrans.
- 43 -
INTRODUCCIN AL MATLAB
Glosario de funciones, comandos y constantes
que se mencionan
A
abs.............................20
acos...........................20
addpath......................19
ans.............................13
asin............................20
atan............................20
atan2..........................20
C
cd 7
clc 7
clear.............................7
clf 7
clock............................7
computer......................7
conj............................20
conv...........................15
cos.............................20
cumprod....................21
cumsum.....................21
D
date..............................7
dblquad......................40
deconv.......................15
delete.........................30
demo............................7
det 12
diag............................13
diary..........................16
Dirac..........................43
disp............................18
dsolve........................38
E
echo...........................19
eps...............................8
eval............................23
exist...........................24
exit..............................7
exp.............................20
expm..........................12
eye.............................12
F
feedback....................36
figure.........................28
find............................21
fix 20
fliplr...........................13
flipud.........................13
fmin...........................41
fmins.........................41
format bank.................6
format compact............7
format hex...................6
format long..................6
format long e...............6
format loose.................7
format rat.....................6
format short.................6
format short e..............6
fourier........................43
fzero..........................41
G
grid............................28
gtext...........................28
H
Heaviside...................43
help..............................5
hold...........................28
I
ifourier.......................43
ilaplace......................43
imag...........................20
impulse......................31
inf 8
input..........................17
int 42
inv11
iztrans........................43
L
laplace.......................43
length.........................20
linspace......................21
load............................16
log20
log10.........................20
loglog........................28
logm..........................12
logspace.....................21
lookfor.........................5
ls 7
lsim............................31
ltiview........................36
M
max............................21
mean..........................21
median.......................21
mesh..........................30
meshgrid....................30
min............................21
more............................6
N
nan...............................8
num2str......................18
O
ode23.........................37
ode45.........................38
ones...........................12
- 44 -
INTRODUCCIN AL MATLAB
P
Path Browser.............19
pause.........................19
pi 8
plot............................28
plot3..........................30
polar..........................28
poly...........................14
polyfit........................15
polyval.......................15
prod...........................21
pwd..............................7
pzmap........................36
Q
quad...........................40
quad8.........................40
quit..............................7
R
rand...........................13
real.............................20
rem............................20
reshape......................13
residue.......................36
roots...........................14
rot90..........................13
round.........................20
S
save...........................16
semilogx....................28
semilogy....................28
Set Path.....................19
shg...............................7
sign............................20
sin 20
size............................20
sort.............................21
sqrt.............................20
sqrtm.........................12
ss 31
ss2tf...........................32
ss2zp..........................32
std 21
step............................31
stepfun.......................33
str2mat.......................23
subplot.......................29
sum............................21
syms..........................42
T
tan20
text.............................28
tf 31
tf2ss...........................32
tf2zp..........................32
title............................28
tril 13
triu.............................13
W
what.............................7
who..............................7
whos............................7
workspace....................7
X
xlabel.........................28
Y
ylabel.........................28
Z
zeros..........................13
zp2ss..........................32
zp2tf..........................32
zpk.............................31
ztrans.........................43
- 45 -

You might also like