Sie sind auf Seite 1von 45

DIPLOMADO EN REDES

UP

CURSO BSICO DE

MATLAB

MS C. JORGE LUIS D AZ RODRGUEZ

FACULTAD DE INGENIERA Y ARQUITECTURA


UNIVERSIDAD DE PAMPLONA

PAMPLONA, M ARZO 2007

INTRODUCCIN AL MATLAB

NOTA DEL AUTOR


El presente material no pretende, de ninguna manera, competir con los diversos manuales y
libros editados hasta el momento sobre el lenguaje MATLAB. Por el contrario, lo aqu expuesto
ha sido recopilado, en gran parte, de stos.
Su propsito es adentrarse de una forma cmoda y rpida en la comprensin y manejo de esta
herramienta y en la solucin de algunos problemas comunes a las ingenieras y a las
matemticas, aunque se plantean algunos ejemplos ms sobre la ingeniera de control
automtico, debido a que una parte importante de sus usuarios ser de esta rama.
Debe entenderse que los comandos y funciones que aqu se presentan solo constituyen una
pequea parte de los existentes en el MATLAB bsico o estndar y en algunos de los toolboxs
conocidos, pero quisiramos que los lectores, al resolver algunos de los problemas aqu
presentados, se puedan imaginar las mayores posibilidades de este lenguaje.
El rigor est ausente casi totalmente en aras de ahorrar tiempo y espacio, pues el nico
propsito es aprender a resolver problemas rpidamente y apropiarse de la idea de las enormes
potencialidades de este lenguaje. Hemos pretendido llegar a un compromiso entre el detalle de
las explicaciones y la amplitud de temas tratados.
Estamos en una etapa en la que aparecen rpidamente nuevas versiones de MATLAB. En pocos
meses surgieron las versiones desde la 6.0 hasta la 7.1, en la cual nos encontramos ahora, por lo
que no haremos referencia a ninguna de ellas. Por ello es posible que resolvamos algunos
problemas de manera clsica sin usar las posibilidades de versiones ms modernas.
Por ltimo, esperamos que el lector pueda disponer de una PC con MATLAB y vaya
familiarizndose a la vez que avanza en estas pginas. Es bueno aclarar que, en los ejemplos
aqu expuestos, en algunas ocasiones, se han intercalado espacios en aras de la claridad de la
impresin, por lo que en el momento de su ejecucin deben eliminarse a fin de evitar posibles
errores. Estos ocurren regularmente en los operadores de relacin compuestos por dos
caracteres.

MSC. JORGE LUIS DAZ RODRGUEZ

-2-

INTRODUCCIN AL MATLAB

NDICE
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 d irectorio ...............................................................................................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 ..................................................................................................................................................................12
2.4.6 Potencia de matrices .................................................................................................................................................12
2.4.7 Determinante .............................................................................................................................................................12
2.5 Funciones trascendentes matriciales ..............................................................................................................................12
2.6 Tipos de matrices predefinidos.......................................................................................................................................13
2.7 Instruccin de asignacin.................................................................................................................................................13
2.8 Operaciones con arreglos u operaciones punto............................................................................................................14
2.9 Polinomiales .......................................................................................................................................................................14

MSC. JORGE LUIS DAZ RODRGUEZ

-3-

INTRODUCCIN AL MATLAB
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............................................................................................................................................................22
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
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
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

MSC. JORGE LUIS DAZ RODRGUEZ

-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 mfiles (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
teclea help comando. Se usa lookfor para encontrar los comandos relacionados con una palabra
clave, por ejemplo, inverse.
MSC. JORGE LUIS DAZ RODRGUEZ

-5-

INTRODUCCIN AL MATLAB

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
format short e
format long
format long e
format hex
format rat
format bank

31.4159
3.1416e+001
31.41592653589793
3.141592653589793e+001
403f6a7a2955385e
3550/113
31.42

MSC. JORGE LUIS DAZ RODRGUEZ

-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
workspace
who
whos
what
clear
clear x, y, z
clf
clc
shg
exit, quit
clock
computer
date
flops

Corre el programa de demostracin


Brinda informacin sobre el espacio de trabajo
Lista todas las variables en uso
Lista todas las variables en uso y su dimensin
Lista todos los ficheros .m, .mat y .mex existentes en el disco
Limpia el espacio de trabajo, elimina todas las variables
Elimina las variables x, y, z
Limpia la pantalla grfica
Limpia la pantalla de texto
Muestra la pantalla grfica
Retornan al SO.
Muestra un vector fila de 6 elementos: ao, mes, da, hora, min., seg.
Tipo de computadora con la que se est trabajando
Informa la fecha actual
Informa el nmero de operaciones de punto flotante realizadas

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

MSC. JORGE LUIS DAZ RODRGUEZ

-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 (o no) 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 nmeros se escriben como en Pascal o C.
1/4 es lo mismo que 4\1
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.
MSC. JORGE LUIS DAZ RODRGUEZ

-8-

INTRODUCCIN AL MATLAB

2.3 Modos de introducir matrices


1.2.3.4.-

Por teclado
Generadas por funciones
Creadas por los m- files
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:

A=

1 2 3
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) = - 2 entonces:
x = [ 1 2 3 0 - 2]
Grandes matrices pueden construirse a base de pequeas:
A = [A; 10 11 12]
A= 1
4
7
10

lo que produce

2 3
5 6
8 9
11 12

MSC. JORGE LUIS DAZ RODRGUEZ

-9-

INTRODUCCIN AL MATLAB
Pequeas matrices pueden extraerse de grandes:
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.
ra
ta
ta
B = A(: , 3:5) extrae las columnas 3 , 4 y 5 de A.
Supongamos A = 1
5
0
3
B = A (1:2, 2:4)

B = A (1:2, 2)

2
6
0
4

3
7
0
2

4
8
0
1

produce una matriz B = 2 3 4


6 7 8
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

0.2000
0.1627

0.4000
0.2610

0.6000
0.3099

MSC. JORGE LUIS DAZ RODRGUEZ

0.8000
0.3223

1.0000
0.3096

- 10 -

INTRODUCCIN AL MATLAB
La entrada de escalares es muy sencilla. Ejemplo:
g = 9.8

2.4 Operaciones bsicas matriciales.


2.4.1 Transpuesta
B = A'
X = [1 2 3 ] '
Si A es compleja, A' es la transpuesta compleja conjugada.
conj (A') es la transpuesta no conjugada.

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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 11 -

INTRODUCCIN AL MATLAB

2.4.5 Divisin
Existen dos smbolos para dividir matrices / y \.
Si A es una matriz cuadrada no singular, entonces
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
0

0
0
0

-1
-0.5
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) = B = e A = I + A +

A2 A3
+
+ .....
2!
3!

logm(A) = B de manera que A = e B


sqrtm(A) = B de manera que B*B = A

MSC. JORGE LUIS DAZ RODRGUEZ

- 12 -

INTRODUCCIN AL MATLAB

2.6 Tipos de matrices predefinidos.


eye (n)
eye(m, n)
ones(n)
ones(m, n)
zeros(m, n)
rand(m, n)
diag(V, K)

diag(V)
triu(A)
tril(A)
rot90(A)
rot90(A, k)
fliplr(A)
flipud(A)
reshape (A, m, n)

Matriz identidad cuadrada de orden n


Matriz identidad de orden m*n
Matriz unitaria cuadrada de orden n
Matriz unitaria de orden m*n
Matriz de ceros de orden m*n
Matriz con elementos aleatorios de orden m*n
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).
Construye una matriz cuadrada de orden N con el vector V en su diagonal
principal.
Extrae la parte triangular superior de A anulando el resto
Extrae la parte triangular inferior de A anulando el resto
Rota una matriz 90 contra las agujas del reloj
Rota una matriz k*90 contra las agujas del reloj
Rota las columnas de izquierda a derecha
Rota las filas de arriba hacia abajo
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)]

1
1

B = 1

0
0

1 1 0
1 1 0
1 1 0
0 0 4
0 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

MSC. JORGE LUIS DAZ RODRGUEZ

- 13 -

INTRODUCCIN AL MATLAB

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;

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]

MSC. JORGE LUIS DAZ RODRGUEZ

- 14 -

INTRODUCCIN AL MATLAB
Para encontrar las races de la ecuacin caracterstica:
r = roots (p)
r=
16. 1168
- 1. 1168
0
Existen otras funciones:
polyval (p, x)
conv(p1, p2)
deconv(p1, p2)
polyfit(x, y, n)

Permite calcular el polinomio, cuyos coeficientes son los elementos del


vector p, para el valor de x.
Obtiene el producto de los polinomios p1 y p2.
Obtiene el cociente de los polinomios p1 y p2.
Ajusta una funcin polinomial de orden n al conjunto de puntos (x, y).
Se obtiene un vector con los coeficientes de la funcin.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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
save nuedatos rx ry rz

save datox.dat x -ascii


save
load misdatos
load

almacena las variables x y y en el fichero misdatos.mat


almacena las variables rx, ry, rz en el fichero nuedatos.
MATLAB aade automticamente la extensin .mat a los
ficheros creados con este comando.
salva la variable x en el fichero xdata.dat en un formato ASCII
de 8 dgitos.
salva todo el espacio de trabajo en el fichero matlab.mat
carga en el espacio de trabajo las variables salvadas en el
fichero misdatos.dat.
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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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')

MSC. JORGE LUIS DAZ RODRGUEZ

- 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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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 (desde la versin 5.0) 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 us uario cre una carpeta con el nombre carpeta dentro de la carpeta
MATLABR11 (versin 5.3) 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 .m 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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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
abs
conj
fix
imag
real
round
sign
rem
sin
cos
tan
asin
acos
atan
atan2
exp
log
log10

Raz cuadrada
Valor absoluto, si es complejo devuelve la magnitud, si es un texto devuelve
los valores en ASCII.
Compleja conjugada
Parte entera
Parte imaginaria
Parte real
Redondea al entero inferior
Signo de funcin
Resto de la divisin Ej. rem(5,2) = 1
Seno
Coseno
Tangente
Arcoseno
Arcocoseno
Arcotangente
Arcotangente en los cuatro cuadrantes
Exponencial
Logaritmo natural
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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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
min
sum
cumsum
prod
cumprod
mean
std
median
sort

Valor mayor
Valor menor
Suma
Suma acumulativa
Producto de los elementos
Producto acumulativo
Valor medio
Desviacin estndar
Devuelve el valor central
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) ) produce un vector con los ndices de los elementos que son pares,
es decir:
B=[1 2 5]
Dos funciones tiles para generar vectores son:
linspace(a, b, n) Genera un vector linealmente espaciado de a hasta b con n puntos.
a
b
logspace(a, b, n) Genera un vector con espaciado logartmico desde 10 hasta 10 de
longitud n.

MSC. JORGE LUIS DAZ RODRGUEZ

- 21 -

INTRODUCCIN AL MATLAB

4.4 Operadores lgicos


&
|
~
xor

and
or
not
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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 22 -

INTRODUCCIN AL MATLAB
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.
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,
adicio nndole 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

MSC. JORGE LUIS DAZ RODRGUEZ

- 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 coma ndo exist ('nombre') el cual
devuelve 0 si no encuentra nada con ese nombre.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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 ');
MSC. JORGE LUIS DAZ RODRGUEZ

- 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

MSC. JORGE LUIS DAZ RODRGUEZ

- 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
end
disp(alumno(p).nombre)
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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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')
xlabel ('Texto')
ylabel ('Texto')
grid
text (x, y, 'Texto')
gtext ('Texto')
leyend('Trazo1', )

Para ponerle un ttulo a una grfica.


Nombre del eje de las abscisas.
Nombre del eje de las ordenadas.
Traza una malla.
Escribe Texto en las coordenadas (x, y) del grfico.
Escribe Texto en el grfico donde se d un click con el mouse.
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.
MSC. JORGE LUIS DAZ RODRGUEZ

- 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 (x1 , y1 , x2 , y2 , ..... , xn , yn )
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
r - red

m - magenta
b - blue

c - cyan
w - white

g - green
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]);

MSC. JORGE LUIS DAZ RODRGUEZ

- 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').
A partir de la versin 5.3 se pueden realizar muchas acciones sobre los grficos directamente
desde la ventana grfica, por ejemplo, facilidades de edicin, salvar, imprimir, etc.
MSC. JORGE LUIS DAZ RODRGUEZ

- 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.
ss
zpk

Funcin de Transferencia. (Cociente de polinomios en funcin del operador de Laplace).


Representacin en Espacio de Estado.
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 / (s2 + 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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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:
u(t)

0 t < 0

G ( s) =
a una entrada u ( t ) = 2 0 t < 2
s 2 + s +1
0.5 t 2

2
0.5
2

%Respuesta a un pulso en t=0


g = tf([2],[1,1,1]);
t = 0:0.01:15;
MSC. JORGE LUIS DAZ RODRGUEZ

- 32 -

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:
u(t)
a
b
c

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

MSC. JORGE LUIS DAZ RODRGUEZ

- 33 -

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/(s2 +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/(s2 +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.
R

L
i

Circuito RLC
La funcin de transferencia del circuito sera:

MSC. JORGE LUIS DAZ RODRGUEZ

- 34 -

INTRODUCCIN AL MATLAB
Vc (s )
1
=
E (s) LC s 2 + RC s + 1

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:
di
R
1
1
= i ( t ) v c ( t ) + e( t )
dt
L
L
L
dv c i ( t )
=
dt
C

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


1 1
A=

1 0

1
B =
0

C = [0 1] D = [0]

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.

G( s) =

3s 2 + 5s + 7
s 4 + 3s 3 + 4s 2 + 2.5s + 0.8

MSC. JORGE LUIS DAZ RODRGUEZ

- 35 -

INTRODUCCIN AL MATLAB

numG = [3 5 7];
denG = [1 3 4 2.5 0.8];
[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.
G ( s) =

3s + 2
2s + 4s 2 + 5s + 1
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.
U(s)

Y(s)
G(s)

H(s)
donde
G ( s) =

4s + 1
5s 2 + 3s + 2

H ( s) =

s+6
s 2 + 4s + 11

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

MSC. JORGE LUIS DAZ RODRGUEZ

- 36 -

INTRODUCCIN AL MATLAB
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.
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 vc. Las ecuaciones seran:
i
e Ri v
v 'c = ; i ' = c
C
L L L
Si suponemos todos los parmetros unitarios, las ecuaciones se simplifican:
v 'c = i ; i ' = 1 i v c

MSC. JORGE LUIS DAZ RODRGUEZ

- 37 -

INTRODUCCIN AL MATLAB
Para resolver este sistema de ecuaciones debemos plantearlo en la forma y'= f(t, y). Haciendo un
cambio de variables segn:
y' (1) = vc
y(2) = i
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.
MSC. JORGE LUIS DAZ RODRGUEZ

- 38 -

INTRODUCCIN AL MATLAB
q=
-4+5*exp(t)
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 vc y con parmetros unitarios, es
decir, v 'c = i ; i ' = 1 i v c .
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:

LC

d 2 v c (t)
dt

dv ( t )
+ RC c + v c ( t ) = e ( t ) , es decir,
dt

d 2 v c (t)
dt

dv c ( t )
+ v c (t ) = 1
dt

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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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.

MSC. JORGE LUIS DAZ RODRGUEZ

- 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

MSC. JORGE LUIS DAZ RODRGUEZ

- 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

MSC. JORGE LUIS DAZ RODRGUEZ

- 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) = t2 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 .

MSC. JORGE LUIS DAZ RODRGUEZ

- 43 -

INTRODUCCIN AL MATLAB

Glosario de funciones, comandos y constantes


que se mencionan

MSC. JORGE LUIS DAZ RODRGUEZ

- 44 -

INTRODUCCIN AL MATLAB

A
abs, 15
acos, 15
addpath, 14
ans, 10
asin, 15
atan, 15
atan2, 15
C
cd, 5
clc, 4
clear, 4
clf, 4
clock, 4
computer, 4
conj, 8, 15
conv, 11
cos, 15
cumprod, 15
cumsum, 15

flops, 4
fmin, 33
fmins, 33
format bank, 4
format compact, 4
format hex, 4
format long, 4
format long e, 4
format loose, 4
format rat, 4
format short, 4
format short e, 4
fourier, 35
fzero, 33

echo, 14
eps, 6
eval, 17
exist, 18
exit, 4
exp, 15
expm, 9
eye, 9
F
feedback, 29
figure, 22
find, 16
fix, 15
fliplr, 10
flipud, 10

nan, 6
num2str, 13
O
ode23, 30
ode45, 30
ones, 9

H
Heaviside, 35
help, 3
hold, 22
I
ifourier, 35
ilaplace, 35
imag, 15
impulse, 25
inf, 6
input, 13
int, 33
inv, 9
iztrans, 35

laplace, 34, 35
length, 15
linspace, 16
load, 12
log, 15
log10, 15
loglog, 22
logm, 9
logspace, 16
lookfor, 3
ls, 5
lsim, 25
ltiview, 29
M
max, 15
mean, 15

MSC. JORGE LUIS DAZ RODRGUEZ

sort, 15
sqrt, 15
sqrtm, 9
ss, 25
ss2tf, 26
ss2zp, 26
std, 15
step, 25
stepfun, 26
str2mat, 17
subplot, 23
sum, 15
syms, 33
T

grid, 22
gtext, 22

L
E

D
date, 4
dblquad, 33
deconv, 11
delete, 24
demo, 4
det, 9
diag, 10
diary, 12
Dirac, 35
disp, 13
dsolve, 31

median, 15
mesh, 23
meshgrid, 23
min, 15
more, 4

Path Browser, 14
pause, 14
pi, 6
plot, 22
plot3, 23
polar, 22
poly, 11
polyfit, 11
polyval, 11
prod, 15
pwd, 4
pzmap, 29

tan, 15
text, 22
tf, 25
tf2ss, 26
tf2zp, 26
title, 22
tril, 10
triu, 10
W
what, 4
who, 4
whos, 4
workspace, 4

Q
quad, 32
quad8, 32
quit, 4

X
xlabel, 22
Y

R
rand, 10
real, 15
rem, 15
reshape, 10
residue, 29
roots, 11
rot90, 10
round, 15

ylabel, 22
Z
zeros, 10
zp2ss, 26
zp2tf, 26
zpk, 25
ztrans, 35

S
save, 12
semilogx, 22
semilogy, 22
Set Path, 14
shg, 4
sign, 15
sin, 15
size, 15

- 45 -

Das könnte Ihnen auch gefallen