Sunteți pe pagina 1din 65

Una introduccin a

MATLAB
Autores: Dr. Pedro Arafet Padilla
MSc. Hugo Domnguez Abreu
Dr. Francisco Chang Muma

Segunda edicin

Facultad de Ing. Elctrica


Universidad de Oriente
Mayo 2004

Nota de los autores


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, a lo que se le ha adicionado algunas experiencias. Por otro
lado, algunos profesionales han estado solicitando soluciones a algunos problemas no expuestos
en la literatura existente de una manera clara.
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 toolboxes
conocidos, pero quisiramos que los lectores, al resolver algunos de los problemas aqu
presentados, se puedan imaginar las mayores posibilidades de esta herramienta.
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 5.0 hasta la 5.3, y en estos momentos ya aparecieron las
versiones 6.0 y 6.5, 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.

Tabla de contenidos
1.- Introduccin

1.1 El programa MATLAB. .......................................................................................................... 6


1.2 Ventanas en MATLAB ............................................................................................................ 6
1.2.1 Ventana de Comandos......................................................................................................... 6
1.2.2 Ventana de grficos ............................................................................................................. 6
1.2.3 Ventana de edicin .............................................................................................................. 6
1.3 Entrada - salida......................................................................................................................... 6
1.3.1 Tipo de dato ......................................................................................................................... 7
1.4 Salida por pantalla.................................................................................................................... 7
1.4.1 Salida de pgina................................................................................................................... 7
1.5 Formato de salida ..................................................................................................................... 7
1.6 Comandos generales que se deben recordar ........................................................................ 8
1.6.1 Comandos que brindan informacin del directorio........................................................... 8
2.- Operaciones con matrices y vectores
9
2.1 Variables y constantes en MATLAB .................................................................................... 9
2.2 Operadores aritmticos en MATLAB ................................................................................... 9
2.3 Modos de introducir matrices...............................................................................................10
2.3.1 Entrada de matrices por teclado. ......................................................................................10
2.4 Operaciones bsicas matriciales...........................................................................................12
2.4.1 Transpuesta ........................................................................................................................12
2.4.2 Suma y resta.......................................................................................................................12
2.4.3 Producto .............................................................................................................................12
2.4.4 Inversa................................................................................................................................12
2.4.5 Divisin ..........................................................................................................................12
2.4.6 Potencia de matrices..........................................................................................................13
2.4.7 Determinante......................................................................................................................13
2.5 Funciones trascendentes matriciales ...................................................................................13
2.6 Tipos de matrices predefinidos.............................................................................................13
2.7 Instruccin de asignacin ......................................................................................................14
2.8 Operaciones con arreglos u operaciones punto. ................................................................15
2.9 Polinomiales.............................................................................................................................15
3.- Ficheros en MATLAB 17
3.1 Ficheros de comandos ............................................................................................................18
3.2 Establecimiento del camino de bsqueda ...........................................................................19
4.- Funciones estndares (built in) 21
4.1 Funciones elementales matemticas ....................................................................................21
3

4.2 Funciones que manipulan datos ...........................................................................................21


4.3 Operadores de relacin..........................................................................................................22
4.4 Operadores lgicos .................................................................................................................22
4.5 Tratamiento de cadenas de caracteres. ...............................................................................23
5.- Subprogramas. Fichero funcin 25
6. Instrucciones estructuradas
26
6.1 Instruccin if............................................................................................................................26
6.2 Instruccin switch...................................................................................................................26
6.3 Instruccin for.........................................................................................................................27
6.4 Instruccin while....................................................................................................................27
6.5 Estructuras o registros en MATLAB ..................................................................................28
7.- Grficos 30
7.1 Grficos de una lnea en el plano .........................................................................................30
7.2.- Grficos de varias lneas .....................................................................................................31
7.4.- Borrado de textos en grficos .............................................................................................33
7.5.- Grficas en el espacio...........................................................................................................34
7.5.2.- Superficies en el espacio.................................................................................................34
7.5.3.- Trazado de planos en el espacio.....................................................................................35
7.5.4.- Trazado de cilindros........................................................................................................36
7.5.5.- Trazado de esferas unitarias. ..........................................................................................38
8.- Clculo numrico 41
8.1.- Solucin de ecuaciones algebraicas ...................................................................................41
8.2.- Integracin numrica...........................................................................................................43
8.3.- Clculo numrico de derivadas..........................................................................................44
8.4.- Solucin de ecuaciones diferenciales de manera numrica. ..........................................44
8.5.- Solucin numrica de sistemas de ecuaciones diferenciales. .........................................45
9.- Clculo simblico 47
9.2.- Simplificaciones y sustituciones .........................................................................................47
9.3.- Uso de funciones en el clculo simblico...........................................................................48
9.4.-Solucin de ecuaciones algebraicas ....................................................................................48
9.6.- Clculo de lmites .................................................................................................................50
9.7.- Clculo de derivadas............................................................................................................50
9.8.- Serie de Taylor......................................................................................................................51
9.9.- Clculo de integrales............................................................................................................52
9.10.- Solucin de ecuaciones diferenciales...............................................................................53
4

9.13.-Transformada de Laplace..................................................................................................56
10.- Solucin de sistemas lineales................................................................................................57
Glosario de funciones, comandos y constantes que se mencionan 64

1.- 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, lgica 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 promt >>. 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 enviada 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.

1.3 Entrada - salida


6

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 peso es diferente a la variable Peso.

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

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

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

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.
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 = 3 + 4*j 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

1/4 es lo mismo que 4\1


Es importante que no haya espacios antes o despus de los operadores de cualquier tipo, pues
puede producir errores.

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:

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] lo que produce
A= 1 2 3
4 5 6
7 8 9
10 11 12
Pequeas matrices pueden extraerse de grandes:
10

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

2
6
0
4

3
7
0
2

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

0.2000 0.4000 0.6000 0.8000 1.0000


0.1627 0.2610 0.3099 0.3223 0.3096

La entrada de escalares es muy sencilla. Ejemplo:


g = 9.8
11

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.

2.4.5 Divisin
Existen dos smbolos para dividir matrices / y \.
12

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.

A2 A3

.....
2!
3!
logm(A) = B de manera que A = e B
sqrtm(A) = B de manera que B*B = A
expm(A) B e A I A

2.6 Tipos de matrices predefinidos.


eye (n)
eye(m, n)
ones(n)
ones(m, n)
13

Matriz identidad cuadrada de orden n


Matriz identidad de orden m*n
Matriz unitaria cuadrada de orden n
Matriz unitaria de orden 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 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 0
1 1 0 0

1 1 0 0

0 0 4 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;
14

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

r=
16. 1168
- 1. 1168
0
Existen otras funciones:
polyval (p, x)
conv(p1, p2)
deconv(p1, p2)
polyfit(x, y, n)

16

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 grado n al conjunto de puntos (x, y).
Se obtiene un vector con los coeficientes de la funcin.

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.

17

diary-files. 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')
Funcin disp
disp (x) imprime la matriz x en pantalla sin imprimir el nombre.
18

Si x es un texto lo imprime. Si se desea imprimir ms de un parmetro, stos deben formar parte


de un vector y ser todos 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.

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
19

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 usuario 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
Tambin se puede escribir cd 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.

20

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

Valor mayor
Valor menor
Suma

cumsum
prod
cumprod
mean
std
median
sort

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.

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

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, la
instruccin
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.
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')
23

eval Calcula el valor de una cadena numrica.


t = '3+2';
eval (t) produce
ans =
5

24

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

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.

26

disp('1. Sinusoide');
disp('2. Cosinusoide');
disp('3. Cosinusoide');
n = input ('Teclee la opcin ');
t = 0:0.01:9;
switch n
case 1
plot(t, sin(t));
case {2, 3}
plot(t, cos(t));
otherwise
disp ('No sea bobo');
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+j1)
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
27

if a(i) = = 0
disp('Hay un cero al menos');
else
disp('No hay ceros');
end

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;
28

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.

29

7.- Grficos
7.1 Grficos de una lnea en el plano
Existen varios tipos de grficos dependiendo del papel usado.
plot(x, y)
grfica lineal x - y.
loglog(x, y)
grfica loglog x - 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')

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.

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.
grid
title(Sen x)

hold Mantiene o no la ventana grfica para trazar otro grfico. Es un switch, de manera que
30

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.
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, ..... , x n, 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 puede 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

Veamos un ejemplo de varias lneas

31

c - cyan
w - white

g
k

- green
- black

wt = 0 : 0.1 : 4 * pi;
plot(wt, sin(wt), b, wt, cos(wt),r);
legend(sen x, cos x) % Destaca el %
color de cada grfica
grid

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.
Veamos un ejemplo.
Queremos trazar las grficas del sen x, cos x,
El programa sera:

32

sen x
y ex /10
x

x = -10:0.01:10;
subplot (2, 2, 1);
plot(x, sin(x)); grid
title(sen(x))
subplot(2, 2, 2); grid
plot(x, cos(x)); grid
title(cos(x))
subplot(2, 2, 3); grid
plot(x, sin(x)./x); grid
title(sen(x) / x)
subplot(2, 2, 4); grid
plot(x, exp(x/10)); grid
title(exp(x/10))

7.3.- 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]);

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
33

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

7.5.- Grficas en el espacio


7.5.1.- Lneas 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 bonito ejemplo sera:

t = 0:pi/50:10*pi;
plot3(sin(t), cos(t), t);
grid on

Con plot3 se pueden realizar muchas de las acciones que se realizan con plot, por ejemplo, el
trazado de varias lneas.

7.5.2.- Superficies en el espacio


mesh permite el trazado de superficies tridimensionales.
meshgrid establece el dominio de definicin.
Un bonito ejemplo sera:

34

[x, y] = meshgrid (-2: .2: 2, -2: .2: 2);


%Rectngulo en el plano xy donde se
valuar z.
z = x .* exp(-x. ^ 2 - y. ^2);
mesh (x, y, z);

7.5.3.- Trazado de planos en el espacio


Ejemplo 1.- Trazar el plano z = x + y

[x, y] = meshgrid(0:.2:2,0:.2:2);
z = x + y;
mesh(x, y, z)
axis([0 2 0 2 0 3]);
colormap([0 0 0;0 0 0;0 0 0])%Esto
% da el color negro

sta sera la grfica despus de rotada convenientemente (180 grados) alrededor del eje z .

35

Ejemplo 2a.- Trazar el plano z = 2 .

Ejemplo 2b.- Trazar el plano x = 1 .

[x,y] = meshgrid(0:.2:2,0:.2:2);
z=2*ones(length(x),length(y));
mesh(x,y,z)
axis([0 2 0 2 0 3]);
colormap([0 0 0;0 0 0;0 0 0])

[y,z] = meshgrid(0:.2:2,0:.2:2);
x=ones(length(y),length(z));
mesh(x,y,z)
axis([0 2 0 2 0 3]);
colormap([0 0 0;0 0 0;0 0 0])

7.5.4.- Trazado de cilindros


Existe la funcin cylinder
[x, y, z] = cylinder ([r1, r2], n)
Esta funcin traza un cilindro (para r1 = r2) con su eje coincidiendo con el eje z. r1 es el radio de
la base en el plano xy. r2 es el radio en un plano z = 1. Los valores asumidos son [1, 1] y n = 20.
N es el nmero de lneas que dan contorno a la superficie. Si se diera a n el valor 5 se trazara un
prisma pentagonal. Con el crecimiento de n se acerca a un cilindro circular.
Ejemplo 1. Trazar un prisma pentagonal.

36

[x,y,z]=cylinder([1, 1], 5);


mesh(x,y,z)%mesh no rellena la
%superficie.
colormap([0 0 1; 0 0 1; 0 0 1])
% Color azul

Para r1 r2 se tratara de un cono.


Ejemplo 2. Trazar un cono invertido de bases 2 y 0.

[x, y, z] cylinder([2,0],20);
surf(x, y, z)%surf rellena la
%superficie.
colormap([1 0 0; 1 0 0; 1 0 0])
% Color rojo

Ejemplo 3. Trazar el cilindro circular de radio 1 relleno con color rojo.

37

[x, y, z]=cylinder([1,1],20);
surf(x, y, z)
colormap([1 0 0;1 0 0;1 0 0])
% Color rojo

sta sera la grfica despus de rotada convenientemente (180 grados) alrededor del eje z, que es
el vertical.

7.5.5.- Trazado de esferas unitarias.

[x, y, z] = sphere(20);
mesh(x, y ,z)
axis equal % Traza los ejes de igual
%longitud en perspectiva

7.5.6.- Otras grficas posibles.


Ejemplo 4. Trazar el paraboloide z = x^2.

38

[x, y] = meshgrid(-10:.2:10,
0:.2:10);
z=x.^2;
mesh(x, y, z)
colormap([0 0 1;0 0 1;0 0 1])
xlabel('x');
ylabel('y');
zlabel('z');

Ejemplo 5.- Trazar el paraboloide de revolucin z = x^2 +y^2.

[x,y] = meshgrid(-10:.5:10,-10:.5:10);
z=x.^2+y.^2;
mesh(x, y, z)
colormap([0 0 1;0 0 1;0 0 1])
xlabel('x');
ylabel('y');
zlabel('z');

Note que el eje z est en (0, 0) del plano x y.

Ejemplo 6.- Trazado de una semiesfera de radio 1, con centro en el origen, sin usar la funcin
sphere.
39

Es importante recordar que la funcin meshgrid define un rectngulo en el plano xy donde se


evaluar la funcin z, por tanto no puede ser un rectngulo de lado 2, pues, por ejemplo, la
funcin no existe en el punto (1, 1).

inter=-0.7:.1:0.7;
[x,y] = meshgrid(inter,inter);
z=sqrt(1-x.^2-y.^2);
mesh(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
axis equal

40

8.- Clculo numrico


8.1.- Solucin de ecuaciones algebraicas
Matlab provee una funcin para la solucin de ecuaciones algebraicas.
fzero calcula un cero o una raz de una funcin de una variable.
La forma de resolverlo es crear primero una funcin. Supongamos que queremos calcular las
races de la ecuacin
x *sen (x) + e

-x/2

=0

en el intervalo [5, 5]

Creamos la funcin fun


function y=fun(x)
y=x.*sin(x)+exp(-x/2);
Pudiramos trazar la grfica de esa funcin, pues Matlab nos da esa posibilidad:

x=-5:0.01:5;
plot(x, fun(x))
grid

La nica raz en ese intervalo podra calcularse usando la funcin ginput y luego hacer click con
el mouse en el cero de la funcin y el problema estara resuelto. Sin embargo, podemos usar la
funcin fzero.
fzero('fun',[-5 5])

y se obtiene el resultado x = 3.2045

Cuando se usa un intervalo en el segundo parmetro, la funcin debe cambiar de signo en los
extremos del intervalo.
El segundo parmetro no tiene que ser un intervalo, puede ser un solo nmero, entonces fzero
encuentra la raz ms cercana a ese valor de x. Por ejemplo se pudo haber escrito
41

fzero('fun', 4)

y se obtendra el mismo resultado

fzero('prueba', x, tol) calcula la raz ms prxima a x con una tolerancia tol para el error.
Si la ecuacin fuera un polinomio igualado a cero, la solucin se podra encontrar de una forma
mucho ms sencilla:
Veamos dos ejemplos:
Ejemplo 1 Calcular las races de la ecuacin
x 3 2x 2 5x 6 0

Se resuelve segn:
roots([1 2 5 6])
ans =
3.0000
-2.0000
1.0000
Ejemplo 2 Calcular las races de la ecuacin
x 2 1 0

Se resuelve segn:
v=[1 0 -1];
roots(v)
ans =
-1.0000
1.0000

42

8.2.- Integracin numrica


La integracin numrica se realiza de una forma similar. Supongamos que se quiere calcular el
rea bajo la funcin
y

1
2

( x .3) 0.01 ( x .9) 2 0.04

en el intervalo 0 x 1

De igual forma creamos la funcin


function y = prueba(x)
y = 1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6;
y ahora ejecutamos

x = -1:0.01:2;
plot(x, prueba(x))

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
43

informacin.

8.3.- Clculo numrico de derivadas


Para el clculo numrico de derivadas se usas la funcin diff.
diff(x)

Si x es un vector calcula [x(2)-x(1), x(3)-x(2), .... x(n)-x(n-1)]

De manera que
h = 0 .001;
x = 0:h:2*pi;
y = diff(sin(x))/h %es una aproximacin a cos(x.)
Pudiramos comprobarlo con

plot(x, sin(x), 'b')


hold
x=0:h:2*pi-h;
plot(x, y, 'r')
grid
legend(seno, coseno)

8.4.- 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. Resolver la ecuacin diferencial y = y + 4, en el intervalo [0 2], con y(0) = 1.
Creamos la funcin f.m
function yprima = f (t, y)
yprima = y+4;
Ahora podemos ejecutar la instruccin
44

[t, y]=ode23 ('f ', [0 2], 1);


Se obtienen dos vectores: y, que es el vector solucin y t, que es el vector del tiempo. La solucin
grfica podra verse usando:
plot (t, y)
Se hubiera podido graficar directamente si hubiramos ejecutado:
ode23 ('f ', [0 2], 1);

8.5.- Solucin numrica de sistemas de ecuaciones diferenciales.


Ejemplo 2. Resolver el sistema de ecuaciones
y= x;
x= 1- x y
Con y(0) = 1;

x(0) = 0

en el intervalo t = [0 10]

Matlab resuelve los sistemas de ecuaciones obteniendo un vector resultado, de manera que
estamos obligados a realizar un cambio de variables con el fin de que las soluciones sean los
componentes de ese vector resultado:
y (1) = y
y(2) = x
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';
La ltima lnea es producto de que yprima debe ser un vector columna.
Ahora podemos usar esta funcin en el siguiente programa

45

[t, y] = ode45 ('f2do', [0 10], [0 1]);


plot (t, y)
grid;
gtext ('y');
gtext ('x');

46

9.- Clculo simblico


9.1.- Creacin de variables simblicas
Se usa el comando syms
Ejemplo
syms a x b

9.2.- Simplificaciones y sustituciones


Una misma expresin se puede escribir de varias formas diferentes
syms x
f = x^36*x^2+11*x6;
g = (x1)*(x2)*(x3);
h = x*(x*(x6)+11)6;
Si quisiramos verlas mejor podramos usar la funcin pretty. Por ejemplo, si ejecutramos
pretty(f)
resultara
3 2
x - 6 x + 11 x - 6
que es mucho ms claro.
Existen varias funciones, que permiten arreglar la expresin. stas son collect, expand,
horner, factor y simplify.
Veamos algunos ejemplos
collect(g)
collect(h)

produce
produce

x^3-6*x^2+11*x-6
x^3-6*x^2+11*x-6

Si hacemos
syms a b
y= exp(a+b);
expand(y)
produce

exp(a)*exp(b)

y = sin(a+b);
expand(y)
produce

sin(a)*cos(b)+cos(a)*sin(b)

La funcin horner transforma un polinomio a la forma de Horner, tal como est la funcin h
47

vista anteriormente.
factor descompone en factores las expresiones en que ello es posible.
simplify es una funcin poderosa que simplifica expresiones algebraicas y trascendentes.
Veamos
syms x y
simplify (log(x*y))
simplify (exp(x) * exp(y))
simplify(cos(x)^2 + sin(x)^2)

produce
produce
produce

log(x) + log(y)
exp(x +y)
1

9.3.- Uso de funciones en el clculo simblico


Muchas de las funciones conocidas pueden usarse en el clculo simblico. Veamos un ejemplo.
Ejemplo 1.- Calcular la suma de los elementos del vector c =[a b-1 2*a a + b]
syms a b
c = [a b-1 2*a a + b];
y = sum(c)
El resultado sera y = 4*a + 2*b - 1

9.4.-Solucin de ecuaciones algebraicas


Se pueden resolver ecuaciones o sistemas de ecuaciones de forma simblica. Para esto se usa la
funcin solve.
La sintaxis sera:
solve(<ecuacin>, <ecuacin>, ..., <var1>, <var2>, ...)
No es necesario el uso del comando syms. En var se especifica la variable incgnita. Si no se
especifica, Matlab asume alguna.
Veamos algunos ejemplos
Ejemplo 2.- Calcular las soluciones de la ecuacin ax2 + bx + c = 0
solve('a*x^2+b*x+c=0', 'x')
El resultado sera:
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
48

[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Pudo haberse escrito sin la especificacin de la variable x.
Como se ve la ecuacin se escribi como cadena. Se puede evitar la cadena, pero deben
declararse las variables simblicas. El mismo problema se pudo resolver segn:
syms a b c x
solve(a*x^2+b*x+c)
Y se obtendra el mismo resultado.
Tambin se pueden resolver sistemas de ecuaciones. Como por ejemplo:
s = solve('x^2-y^2 = x', 'x +y = -1');
La solucin se ofrece en una estructura s con dos campos x e y. Para ver las soluciones se debe
escribir:
s.x

s.y

9.5.- Solucin de sistemas de ecuaciones lineales.


Supongamos el sistema:
x1 + ax2 = 2
2ax1 +x2 +x3 =1
x1 + x2 + x3 = 0
La solucin sera:
syms a
A = [1 a 0; 2*a 1 1; 1 1 1];
b = [2 1 0]';
x = A\b;

2a 1

4a 3

El resultado sera: x=
a ( 2a 1)

5a 3

a ( 2a 1)

49

9.6.- Clculo de lmites


Para esto se usa la funcin simblica limit.
Su forma general es
limit(<funcin>, <variable>, <lmite>)

Se trata de

funcin (var iable )

lim

var iablelm ite

Si la variable es x, no es necesario especificarlo. Si el lmite de la variable x es 0 no es necesario


especificarlo.
sen x
Ejemplo 1.- Calcular lim
x0 x
syms x
limit(sin(x)/x, x, 0)
Tambin pudo haberse escrito
limit(sin(x)/x)

ln(x )
x x

Ejemplo 2.- Calcular lim


syms x
limit(log(x)/x, inf)
Ejemplo 3.- Calcular lim

y 0

y 2 ay 1
(y a) 2

syms a
limit((y^2 - a*y + 1)/(y - a)^2, y, 0)
El resultado sera:
1/a^2

9.7.- Clculo de derivadas


Para el clculo de las derivadas se usa la funcin diff.
Se puede escribir
diff(<funcin>, <variable>, <orden de la derivada>)
50

Si la derivada es respecto a x, no es necesario especificarlo.


x

Ejemplo1. Calcular la derivada de e sen x


syms x
diff(exp(x)*sin(x))
El resultado sera
exp(x)*sin(x)+exp(x)*cos(x)
x

Ejemplo 2. Calcular la segunda derivada de e sen x


syms x
diff(exp(x)*sin(x),2)
El resultado sera
2*exp(x)*cos(x)
Ejemplo 3. Calcular la segunda derivada de sen(xy) respecto a y.
syms x y
diff(sin(x*y), y, 2)
El resultado sera
-sin(x*y)*x^2

9.8.- Serie de Taylor


Es posible calcular la serie de Taylor de una funcin dada.
Ejemplo 1.- Calcular los primeros 5 trminos de la serie de Taylor de la funcin
Y =sen(x) para el punto x = a
syms a x
y = taylor(sin(x),5,a)
El resultado sera
y = sin(a)+cos(a)*(x-a)-1/2*sin(a)*(x-a)^2-1/6*cos(a)*(x-a)^3+1/24*sin(a)*(x-a)^4
Est claro que se puede encontrar la serie de MacLaurin haciendo a = 0, en este caso no hace falta
especificarlo. Puede escribirse
syms x
y = taylor(sin(x), 5)
51

El resultado sera
y = x-1/6*x^3

que son los 5 primeros trminos de la serie, conociendo que algunos son 0.

9.9.- Clculo de integrales


Para el clculo de integrales existe la funcin int.
Se puede escribir
int(<f(x)>)

Se calcula la integral indefinida de f(x)

Ejemplo 1.- Calcular la integral indefinida de x2.


syms x
int(x^2)
El resultado sera
1/3*x^3
Ejemplo 2.- Calcular

x 2 1 dx

syms x
int(1/(x^2+1))
ans =
atan(x)
Tambin se puede escribir
int(<f(x, y)>, y)

Se calcula la integral indefinida de f(x, y) respecto a y

Ejemplo 3.- Calcular sen(xy)dy


syms x y
int(sin(x*y), y)
El resultado sera
-1/x*cos(x*y)
Tambin se pueden calcular integrales definidas.
int(<f(x, y)>, y, a, b) Se calcula la integral definida de f(x, y) respecto a y, siendo a y b los
lmites de integracin.

52

Ejemplo 3.- Calcular

sen(xy) dy
0

syms x y
int(sin(x*y), y, 0, pi/2)
El resultado sera
-(cos(1/2*pi*x)-1)/x
Est claro que se pueden integrar tambin matrices. Veamos el siguiente ejemplo.
Ejemplo 4.- Calcular

sen(t )

t
dt
a

syms t a
A = [1 t; sin(t) a];
int (A)
ans =
[
t, 1/2*t^2]
[ -cos(t), a*t]
Se pueden calcular integrales mltiples

Ejemplo4.-Calcular

x * sin(y)dydx
00

int(int(x*sin(y),0,pi),0,pi)
El resultado sera

9.10.- Solucin 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)
q=
-4+5*exp(t)
53

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)
9.11.- Solucin de sistemas de ecuaciones diferenciales
Ejemplo 1.- Resolver el sistema de ecuaciones diferenciales en x(t) y en y(t).
y = x
x = 1 x y

con y(0) = 0; x(0) = 1

q = dsolve ('Dy = x', 'Dx = 1- x - y', 'y(0) = 0', 'x(0) = 1');


MATLAB almacena los resultados en un registro con dos campos: x, y. Para ver el resultado para
y(t) debemos escribir q.y. Con q.x obtendramos la respuesta x(t).
Los resultados seran
q.y = 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)))
q.x = -1/3*exp(-1/2*t)*(-3*cos(1/2*t*3^(1/2))-3^(1/2)*sin(1/2*t*3^(1/2)))

54

9.12.-Grficas de funciones simblicas.


Matlab tambin ofrece grficas de funciones simblicas, para lo cual existe la funcin ezplot.
Supongamos que queremos trazar la grfica de y

syms x
y = sin(x)/x;
ezplot(y,[-15 15]);
axis([-15 15 -0.5 1])
GRID

55

sen x
x

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

56

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

transfer function.
state space.
cociente de dos polinomios descompuestos en factores (polos y ceros).

Veremos algunos ejemplos de aplicacin general, pero de particular importancia en el control


automtico.
step es una funcin 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.
Ejemplo 2.
57

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:

a una entrada
s 2 s 1
0 t 0

u ( t ) 2 0 t 2
0.5 t 2

G (s)

58

%Respuesta a un pulso en t=0


g = tf([2],[1,1,1]);
t = 0:0.01:15;
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);
59

grid
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

i
e

Circuito RLC

La funcin de transferencia del circuito sera:


60

Vc

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

dv c ( t )
d 2 v c ( t ) dv c ( t )
,
es
decir,
RC
v c ( t ) e( t )

v c (t ) 1
dt
dt
dt 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.

Ejemplo 7. Resolver el problema anterior usando el modelo en el espacio de estado.


Si escribimos el modelo matemtico segn:

61

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

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
3

2s 4s 2 5s 1

%Expansin en fracciones parciales y respuesta a impulso.


num = [3 2];
62

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
2

5s 3s 2

H (s)

s6
2

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

63

Glosario de funciones, comandos y constantes que se mencionan


A
abs, 14, 21
acos, 21
addpath, 20
and, 22
ans, 14
asin, 21
atan, 21
atan2, 21
axis, 33, 35, 36, 39, 40, 55,
59, 60
C
cd, 8
Ch
chdir, 8
C
clc, 8
clear, 8
clf, 8
clock, 8
collect, 47
colormap, 35, 36, 37, 38,
39, 40
compact, 7
computer, 8
conj, 12, 21
Conj, 12
conv, 16
cos, 21, 27, 32, 33, 34, 44,
47, 48, 51, 52, 53, 54, 61
cumprod, 22
cumsum, 22
cylinder, 36, 37, 38
D
date, 8
dblquad, 43
deconv, 16
delete, 8, 33
demo, 8
64

det, 13
diag, 14
diary, 18
diff, 44, 50, 51
Dirac, 56
disp, 18, 19, 27, 28, 29
dsolve, 53, 54, 61
E
echo, 20
else, 26, 28
eps, 9
eval, 24
exist, 25
exit, 8
exp, 21
expand, 47
expm, 13
eye, 13, 14
ezplot, 55

G
grid, 30, 32, 33, 34, 41, 44,
46, 55, 57, 59, 60, 61, 62
gtext, 30, 34, 46
H
Heaviside, 56
help, 6, 19, 43
hold, 30
horner, 47
I

F
factor, 47, 48
feedback, 63
figure, 31
find, 22
fix, 21, 22
fliplr, 14
flipud, 14
flops, 8
for, 4, 27, 28, 58, 59, 60
format, 7
format bank, 7
format compact, 7
format hex, 7
format long, 7
format long e, 7
format loose, 7
format rat, 7
format short, 7
format short e, 7
fourier, 56
function, 17, 25, 26, 41,
43, 44, 45, 57, 59
fzero, 41, 42

if, 4, 26, 28
ifourier, 56
ilaplace, 56
imag, 21, 32
impulse, 57
inf, 9, 50
input, 18, 19, 27, 28
int, 52, 53
inv, 12, 13
iztrans, 56
L
laplace, 56
legend, 32, 44
length, 21
limit, 50
linspace, 22
load, 8, 10, 17
log, 21
log10, 21
loglog, 30
logm, 13
logspace, 22
lookfor, 6
ls, 8
lsim, 57, 58, 59, 63
ltiview, 63
M
max, 21
mean, 22

median, 22
mesh, 34, 35, 36, 37, 39,
40
meshgrid, 34, 35, 36, 39,
40
min, 21
more, 7
N
nan, 9
not, 22
num2str, 19, 60
O
ode, 44
ode23, 44, 45
ode45, 46
ones, 13, 14, 36, 58, 59
or, 22
otherwise, 26, 27
P
Path, 20
Path Browser, 20
pause, 20
pi, 9
plot, 19, 27, 30, 31, 32, 33,
34, 41, 43, 44, 45, 46,
57, 58, 59, 60, 61, 62
plot3, 34
polar, 30
poly, 15
polyfit, 16
polyval, 16
pretty, 47
prod, 22
pwd, 8
pzmap, 62

sum, 21
switch, 4, 7, 20, 26, 27, 30
syms, 47, 48, 49, 50, 51,
52, 53, 55, 56

quad, 43
quad8, 43
quit, 8

rand, 14
real, 7, 21, 32
rem, 21
reshape, 14
residue, 62
roots, 15, 42
rot90, 14
round, 21
S
save, 8, 17, 19, 20
semilogx, 30
semilogy, 30
Set Path, 20
shg, 8
sign, 21
simplify, 47, 48, 56
sin, 2, 7, 11, 18, 19, 21, 27,
30, 32, 33, 34, 40, 41,
44, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 58, 61
size, 21
solve, 48, 49, 61
sort, 22
sqrt, 10, 19, 21, 25, 40
sqrtm, 13
ss, 57, 62
ss2tf, 58
ss2zp, 58
std, 22
step, 57, 60, 61, 62, 63
stepfun, 59
str2mat, 23
subplot, 32, 33, 60

tan, 21
taylor, 51
text, 30, 34, 60
tf, 57, 58, 61, 63
tf2ss, 58
tf2zp, 58, 62
title, 30, 33, 57
tril, 14
triu, 14
type, 8
W
what, 8
while, 4, 27
who, 8
whos, 8
workspace, 8
X
xlabel, 30, 33, 39, 40, 57
xor, 22
Y
ylabel, 30, 33, 39, 40, 57
Z
zeros, 14
zlabel, 39, 40
zp2ss, 58
zp2tf, 58
zpk, 57
ztrans, 56

S-ar putea să vă placă și