CURSO BÁSICO DE

MATLAB
INTRODUCCIÓN AL MATLAB
ÍNDICE
CURSO BÁSICO DE ............................................................................................1
MATLAB............................................................................................................1
CAPÍTULO I: INTRODUCCIÓN.......................................................................................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 gráficos .......................................................................................................................................5
1.2.3 Ventana de edición..........................................................................................................................................5
1.3 Entrada - salida....................................................................................................................................................6
1.3.1 Tipo de dato ....................................................................................................................................................6
1.4 Salida por pantalla...............................................................................................................................................6
1.4.1 Salida de página...............................................................................................................................................6
1.5 Formato de salida................................................................................................................................................6
1.6 Comandos generales que se deben recordar........................................................................................................7
1.6.1 Comandos que brindan información del directorio.........................................................................................7
CAPÍTULO 2: OPERACIONES CON MATRICES Y VECTORES..................................8
2.1 Variables y constantes en MATLAB.................................................................................................................8
2.2 Operadores aritméticos en MATLAB.................................................................................................................8
2.3 Modos de introducir matrices..............................................................................................................................9
2.3.1 Entrada de matrices por teclado......................................................................................................................9
2.4 Operaciones básicas 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 “División” ...............................................................................................................................................11
2.4.6 Potencia de matrices......................................................................................................................................12
- 2 -
INTRODUCCIÓN AL MATLAB
2.4.7 Determinante.................................................................................................................................................12
2.5 Funciones trascendentes matriciales.................................................................................................................12
2.6 Tipos de matrices predefinidos.........................................................................................................................12
2.7 Instrucción de asignación..................................................................................................................................13
2.8 Operaciones con arreglos u operaciones punto.................................................................................................14
2.9 Polinomiales ....................................................................................................................................................14
CAPÍTULO 3. FICHEROS EN MATLAB.......................................................................16
3.1 Ficheros de comandos ......................................................................................................................................17
3.2 Establecimiento del camino de búsqueda.........................................................................................................19
CAPÍTULO 4. FUNCIONES ESTÁNDARES (BUILT IN)..............................................20
4.1 Funciones elementales matemáticas.................................................................................................................20
4.2 Funciones que manipulan datos........................................................................................................................20
4.3 Operadores de relación .....................................................................................................................................21
4.4 Operadores lógicos............................................................................................................................................21
4.5 Tratamiento de cadenas de caracteres...............................................................................................................22
CAPÍTULO 5. SUBPROGRAMAS. FICHERO FUNCIÓN.............................................24
CAPÍTULO 6. INSTRUCCIONES ESTRUCTURADAS................................................25
6.1 Instrucción if.....................................................................................................................................................25
6.2 Instrucción switch.............................................................................................................................................25
6.3 Instrucción for...................................................................................................................................................26
6.4 Instrucción while..............................................................................................................................................26
6.5 Estructuras o registros en MATLAB................................................................................................................27
CAPÍTULO 7. GRÁFICOS ...........................................................................................28
7.1 Gráficos de una línea.........................................................................................................................................28
7.2 Gráficos de varias líneas...................................................................................................................................28
7.3 Gráficas en el espacio........................................................................................................................................30
- 3 -
INTRODUCCIÓN AL MATLAB
7.4 Borrado de textos en gráficos............................................................................................................................30
CAPÍTULO 8. ALGUNOS EJEMPLOS ........................................................................31
8.1 Solución de sistemas lineales............................................................................................................................31
8.2 Solución de ecuaciones diferenciales de manera numérica..............................................................................37
8.3 Solución simbólica de ecuaciones diferenciales...............................................................................................38
................................................................................................................................................................................38
................................................................................................................................................................................39
8.4 Integración numérica.........................................................................................................................................40
8.5 Ecuaciones no lineales y optimización.............................................................................................................41
8.6 Integración simbólica........................................................................................................................................42
8.7 Transformada de Laplace..................................................................................................................................43
GLOSARIO DE FUNCIONES, COMANDOS Y CONSTANTES QUE SE MENCIONAN
........................................................................................................................................44
- 4 -
INTRODUCCIÓN AL MATLAB
Capítulo I: Introducción
1.1 El programa MATLAB
MATLAB es el nombre abreviado de “MATrix LABoratory”. Es un programa
para realizar cálculos con vectores y matrices. Como caso particular puede
también trabajar con números escalares, tanto reales como complejos. Una
de las capacidades más atractivas es la de realizar una amplia variedad de
gráficos en dos y tres dimensiones. MATLAB tiene también un lenguaje de
programación propio. Es, para muchos, el paquete más usado en ingeniería
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 verán aquí, que se conocen en el
mundo con el nombre de toolbox, y que resuelven problemas de ramas específicas, tales como
el control automático, control no lineal, identificación, gráficos, matemática simbólica,
estadísticas, redes neuronales, fuzzy, procesamiento de señales, etc., y todos los años 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 aplicación es la primera
ventana que aparece. Todos los comandos, incluso aquéllos 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 gráficos
La salida de todos los comandos gráficos 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 edición
Aquí es donde el usuario escribe, edita y salva sus propios programas en ficheros llamados m-
files (ficheros punto m). Se accede por el menú file en la opción Open o new m-file.
Los comandos help y lookfor son muy importantes, pues brindan ayuda en línea. Estos
comandos muestran en pantalla todas las funciones, comandos y, en general, todos los
elementos que forman parte del lenguaje. Se puede conocer lo fundamental de un comando si se
- 5 -
INTRODUCCIÓN AL MATLAB
teclea help comando. Se usa lookfor para encontrar los comandos relacionados con una palabra
clave, por ejemplo, inverse.
1.3 Entrada - salida
MATLAB soporta el cálculo 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
características se mantienen para todas las formas de entrada - salida.
1.3.1 Tipo de dato
Básicamente existe un solo tipo de dato que es la matriz compleja, los números reales son casos
particulares. Cuando un número real es entrado como valor de un variable, MATLAB hace cero
automáticamente la parte imaginaria.
Sensibilidad al tipo de letra. MATLAB es sensible al tipo de letra, diferencia las minúsculas
de las mayúsculas. La variable A es diferente a la variable a.
1.4 Salida por pantalla
El resultado de la acción que realiza cada comando es visualizado en la pantalla. Sin embargo
esto puede evitarse tecleando un punto y coma al final del comando con excepción de los
gráficos y la ayuda en línea. Para interrumpir un comando o un programa se usa ^C.
1.4.1 Salida de página
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 líneas por pantalla. De otra forma se envía la salida sin
importar si el usuario tiene tiempo o no de leer la información.
1.5 Formato de salida
Todos los cálculos dentro de MATLAB son realizados usando doble precisión. La forma de
aparición del punto flotante es controlada por el formato en uso. La siguiente tabla muestra el
valor de 10π en 7 formatos diferentes:
format short 31.4159
format short e 3.1416e+001
format long 31.41592653589793
format long e 3.141592653589793e+001
format hex 403f6a7a2955385e
format rat 3550/113
format bank 31.42
- 6 -
INTRODUCCIÓN AL MATLAB
Los formatos adicionales: format compact (suprime una línea posterior) y format loose (pone
una línea posterior) controlan el espacio por encima y por debajo de la presentación del número.
format + , visualiza el signo del número.
format short es el asumido.
1.6 Comandos generales que se deben recordar
demo Corre el programa de demostración
workspace Brinda información sobre el espacio de trabajo
who Lista todas las variables en uso
whos Lista todas las variables en uso y su dimensión
what Lista todos los ficheros .m, .mat y .mex existentes en el disco
clear Limpia el espacio de trabajo, elimina todas las variables
clear x, y, z Elimina las variables x, y, z
clf Limpia la pantalla gráfica
clc Limpia la pantalla de texto
shg Muestra la pantalla gráfica
exit, quit Retornan al SO.
clock Muestra un vector fila de 6 elementos: año, mes, día, hora, min., seg.
computer Tipo de computadora con la que se está trabajando
date Informa la fecha actual
1.6.1 Comandos que brindan información 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
También se pueden usar, del MS-DOS, type, delete, chdir, save, load
- 7 -
INTRODUCCIÓN AL MATLAB
Capítulo 2: Operaciones con matrices y
vectores.
2.1 Variables y constantes en MATLAB
Los nombres de variables y funciones se forman por una letra seguida de cualquier combinación
de letras (del alfabeto inglés) y dígitos. Sin embargo, solo los primeros 31 caracteres de la
variable y los primeros 8 de una función serán recordados por MATLAB. El guión bajo (_) se
considera como una letra.
Los paréntesis se usan como en Pascal o C.
Es posible trabajar con números 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 números debe escribirse el operador *.
Estas tres instrucciones almacenan el mismo número 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
cuán cerca estamos de la singularidad.
eps = 2.2204 e-016
También 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 matemáticamente tales como inf/inf,
0/0, etc.
2.2 Operadores aritméticos en MATLAB
+ Suma
- Resta
* Multiplicación
\ División izquierda
/ División derecha
^ Potencia
Es importante que no haya espacios antes o después de los operadores de cualquier tipo, pues
puede producir errores.
- 8 -
INTRODUCCIÓN AL MATLAB
2.3 Modos de introducir matrices
1.- Por teclado
2.- Generadas por funciones
3.- Creadas por los m-files
4.- Cargadas desde un fichero de datos externo con el comando load.
2.3.1 Entrada de matrices por teclado.
Existen tres formas de entrada de matrices por teclado.
A = [ 1 2 3; 4 5 6; 7 8 9]
A = [ 1, 2, 3; 4, 5, 6; 7, 8, 9]
A = [ 1 2 3
4 5 6
7 8 9]
Almacenan en A la matriz:
1 2 3
A = 4 5 6
7 8 9
Se puede referir a un elemento de la matriz A, por ejemplo, A(i, j). Se trata del elemento de la
fila i y la columna j.
Los elementos de la matriz pueden ser, en general, expresiones:
x = [1 sqrt(23) 2 3*[A(1, 1) 3] ]
Interesante:
x = [1 2 3]
x (5) = 9 entonces:
x = [ 1 4.7958 2 3 9]
Grandes matrices pueden construirse a base de pequeñas:
A = [A; 10 11 12] lo que produce
A = 1 2 3
4 5 6
7 8 9
10 11 12
Pequeñas matrices pueden extraerse de grandes:
- 9 -
INTRODUCCIÓN AL MATLAB
A = A(1: 3, 1: 2) Produce una matriz con las tres primeras filas y las dos primeras columnas de
A.
B = A(2, :) extrae la segunda fila de A.
Supongamos A = 1 2 3 4
5 6 7 8
0 0 0 0
3 4 2 1
B = A (1:2, 2:4) produce una matriz B = 2 3 4
6 7 8
B = A (1:2, 2) produce un vector B = 2
6

B = A (:, 3) produce B = 3
7
0
2
B = A (1:3, :) produce B = 1 2 3 4
5 6 7 8
0 0 0 0
B = A (:) produce B = [1 2 3 4 5 6 7 8 0 0 0 0 3 4 2 1]
Se pueden generar vectores
y = m : n : p genera un vector con los elementos desde m hasta p con un incremento n. n
puede ser negativo. Si el incremento no se especifica se asume uno.
Permiten hacer cosas como éstas:
x = 0: 0.2: 1;
y = exp(-x).*sin(x);
[x, y] produce
ans =
0 0.2000 0.4000 0.6000 0.8000 1.0000
0 0.1627 0.2610 0.3099 0.3223 0.3096
La entrada de escalares es muy sencilla. Ejemplo:
g = 9.8
- 10 -
INTRODUCCIÓN AL MATLAB
2.4 Operaciones básicas matriciales.
2.4.1 Transpuesta
B = A'
X = [1 2 3 ] '
2.4.2 Suma y resta
Si A y B son conformes a la suma se puede escribir:
C = A + B ó C = A - B
Se pueden realizar operaciones de suma y resta con escalares.
Y = X - 1 si X = 1 entonces Y = 0
2 2
3 3
2.4.3 Producto
Sólo 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 “División”
Existen dos símbolos para “dividir” matrices / y \.
Si A es una matriz cuadrada no singular, entonces
- 11 -
INTRODUCCIÓN AL MATLAB
B/A = B*inv(A) (División derecha)
B\A = inv(B)*A (División izquierda)
Es decir,
x = A\b es la solución 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 ecuación
sobredeterminada x*s = y por mínimos cuadrados.
Sin embargo S = y/x produce una respuesta:
S = [0 0 -1
0 0 -0.5
0 0 0.5]
2.4.6 Potencia de matrices

B^p Significa B a la potencia p. Solo es posible si B es cuadrada, se trata de una multiplicación
sucesiva de B, si p es entero.
2.4.7 Determinante
B = det(A) calcula la determinante de A cuadrada.
2.5 Funciones trascendentes matriciales
Existen tres funciones para matrices: expm, logm y sqrtm.
expm(A) .....
! 3
A
! 2
A
A I e B
3 2
A
+ + + + · · ·
logm(A) = B de manera que A =
B
e
sqrtm(A) = B de manera que B*B = A
2.6 Tipos de matrices predefinidos.
eye (n) Matriz identidad cuadrada de orden n
eye(m, n) Matriz “identidad” de orden m*n
ones(n) Matriz unitaria cuadrada de orden n
ones(m, n) Matriz “unitaria” de orden m*n
- 12 -
INTRODUCCIÓN AL MATLAB
zeros(m, n) Matriz de ceros de orden m*n
rand(m, n) Matriz con elementos aleatorios de orden m*n
diag(V, K) Si V es un vector fila o columna de n componentes,
se construye una matriz de orden n + abs(k) colocando
el vector en la K-ésima diagonal (K = 0 es la diagonal principal), K > 0
encima de la diagonal principal y K < 0 por debajo).
diag(V) Construye una matriz cuadrada de orden N con el vector V en su diagonal
principal.
triu(A) Extrae la parte triangular superior de A anulando el resto
tril(A) Extrae la parte triangular inferior de A anulando el resto
rot90(A) Rota una matriz 90
º
contra las agujas del reloj
rot90(A, k) Rota una matriz k*90
º
contra las agujas del reloj
fliplr(A) Rota las columnas de izquierda a derecha
flipud(A) Rota las filas de arriba hacia abajo
reshape (A, m, n) Devuelve una matriz de orden m*n cuyos elementos son tomados por
columna de A. Si A no tiene m*n elementos se produce un error.
Un ejemplo sería:
B = [ones(3) zeros(3, 2); zeros(2, 3) 4*eye(2)] B ·

¸

1
]
1
1
1
1
1
1
1 1 1 0 0
1 1 1 0 0
1 1 1 0 0
0 0 0 4 0
0 0 0 0 4
2.7 Instrucción de asignación
La sintaxis de una instrucción de asignación es
Variable = expresión [; ]
La evaluación de una expresión 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 automáticamente una variable con el
nombre ans (respuesta).
>>1900/81 produce
ans =
23.4568
Si la expresión es demasiado larga o complicada, se puede continuar en la próxima línea
escribiendo 3 ó más puntos luego del operador aritmético. Veamos.
S = 1 - 1/2 + 1/3 - 1/4 + 1/5 -.....
1/6 + 1/7;
- 13 -
INTRODUCCIÓN AL MATLAB
2.8 Operaciones con arreglos u operaciones punto.
Se trata de operaciones término a término.
La suma y la resta son claras, pues estas operaciones con matrices son así: término a término.
El producto de arreglos o el producto de dos matrices término a término se denota, por A.*B.
Las división 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 división 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 Vacía
x = [ ] crea una matriz vacía.
2.9 Polinomiales
poly permite encontrar los coeficientes del polinomio característico 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 raíces de la ecuación característica:
r = roots (p)
r =
16. 1168
- 1. 1168
- 14 -
INTRODUCCIÓN AL MATLAB
0
Existen otras funciones:
polyval (p, x) Permite calcular el polinomio, cuyos coeficientes son los elementos del
vector p, para el valor de x.
conv(p1, p2) Obtiene el producto de los polinomios p1 y p2.
deconv(p1, p2) Obtiene el cociente de los polinomios p1 y p2.
polyfit(x, y, n) Ajusta una función polinomial de orden n al conjunto de puntos (x, y).
Se obtiene un vector con los coeficientes de la función.
- 15 -
INTRODUCCIÓN AL MATLAB
Capítulo 3. Ficheros en MATLAB
MATLAB tiene cuatro tipos de ficheros para almacenar la información:
m-files. Son ficheros de texto ASCII estándares con extensión .m. Existen dos tipos de estos
ficheros: ficheros comandos (script files) y ficheros funciones (function files).
mat-files. Son ficheros de datos binarios, con extensión .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 estándares (built-in) son m-files.
Hay muchas formas de cargar y almacenar datos en MATLAB. La vía más directa es el uso de
los comandos load y save.
El comando save es usado para salvar todo el espacio de trabajo o una selección de las variables
en un fichero llamado Mat-file. Los ficheros-Mat (Mat-file) son escritos en un formato binario
con precisión de 16 bits. También es posible escribir los ficheros-Mat en formatos de ASCII de
16 y 8 dígitos con argumentos opcionales. Estos ficheros siempre tendrán extensión .mat. Los
datos almacenados en estos ficheros pueden ser cargados en el espacio de trabajo de MATLAB
a través del comando load. A continuación se muestran ejemplos del uso apropiado de estos
comandos.
Ejemplos:
save misdatos.mat x y almacena las variables x y y en el fichero misdatos.mat
save nuedatos rx ry rz almacena las variables rx, ry, rz en el fichero nuedatos.
MATLAB añade automáticamente la extensión .mat a los
ficheros creados con este comando.
save datox.dat x -ascii salva la variable x en el fichero xdata.dat en un formato ASCII
de 8 dígitos.
save salva todo el espacio de trabajo en el fichero matlab.mat
load misdatos carga en el espacio de trabajo las variables salvadas en el
fichero misdatos.dat.
load carga las variables almacenadas en el fichero por defecto
matlab.mat
Los ficheros con datos tipo ASCII pueden ser cargados en el espacio de trabajo de MATLAB,
como una matriz rectangular de elementos numéricos, en este caso MATLAB crea una variable
cuyo nombre coincidirá con el nombre del fichero diary-files.
- 16 -
INTRODUCCIÓN AL MATLAB
Otra forma de salvar o recuperar lo realizado en una sesión de trabajo es usando el comando
diary. Esto permite almacenar en un fichero “editable” todos los comandos y funciones
utilizados en una sesión de MATLAB. Como salida puede ser utilizado un nombre de fichero
con cualquier extensión.
Para esto lo primero que hay que hacer es teclear diary seguido del nombre del fichero, por
ejemplo, diary seccion1.out. Después de esto todos los comandos y funciones que sean
llamados, las señalizaciones 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 sesión o se teclee diary
off. Es posible adicionar cualquier otra sesión y para esto se teclea diary on, a partir de aquí
todas las operaciones que se realicen serán añadidas al fichero ya existente.
Este comando es muy útil, ya que a través de él es posible recordar o repetir los comandos
empleados en una sesión anterior. Además, 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 líneas 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 extensión .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 capítulo no trataremos los ficheros función, a los que le dedicaremos un capítulo aparte.
Es claro que MATLAB se usa más comúnmente 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 extensión es ésa. Se crea accediendo al editor de MATLAB usando la opción new de
file.
Los ficheros .m pueden contener, a su vez, referencias a otros ficheros .m.
Función input

Para leer un dato
n = input ('Teclee el número de ..... ').
MATLAB imprime en la ventana de comandos la cadena, ‘Teclee el número ...’, espera recibir
un dato por teclado y lo almacena en la variable n. Si se desea leer una cadena de caracteres se
debe escribir:
n = input ('Teclee .. ..... ', 's')
- 17 -
INTRODUCCIÓN AL MATLAB
Función disp
disp (x) imprime la matriz x en pantalla sin imprimir el nombre.
Si x es un texto lo imprime. Si se desea imprimir más de un parámetro, 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 opción 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 gráfica del seno(x) desde cero a 4π radianes.
Usando la opción save de file, de la ventana del editor, podemos grabar el fichero con el
nombre, por ejemplo, grafsin.m
El símbolo % 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 triángulo rectángulo
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 ejecución de help nombre de fichero imprime en la ventana de
comandos las primeras líneas 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, tomarían un nuevo
valor.
- 18 -
INTRODUCCIÓN AL MATLAB
3.2 Establecimiento del camino de búsqueda
Matlab ya tiene establecidos los caminos de búsqueda de los ficheros propios para su ejecución
o llamada. También ofrece la carpeta work para que el usuario pueda almacenar sus ficheros.
Es posible, además, crear otras carpetas y entonces se debe establecer el camino
correspondiente. Esto se puede realizar utilizando la opción Set Path del submenú File para
abrir la ventana del Path Browser. En esta ventana se puede agregar un camino de búsqueda
ejecutando la opción Add to Path del submenú Path.
También se puede establecer el camino desde la ventana de comandos usando el comando
addpath.
Veamos un ejemplo. Si el usuario creó una carpeta con el nombre carpeta dentro de la carpeta
MATLAB y ahí almacena sus ficheros, debe establecer el camino de la siguiente forma:
addpath c:\matlabr11\carpeta
Este camino establecido valdrá durante esa sesión de trabajo, pues al terminarla no se mantiene.
Si se quisiera mantener para sesiones futuras se debe ejecutar la opción Save Path del submenú
File del Path Browser o, desde la ventana de comandos, ejecutar save path.
echo
Es un switch. Normalmente cuando se ejecuta un fichero .mo los comandos no se imprimen en
pantalla, aunque a veces puede ser conveniente que se muestren para corregir errores. Para
ficheros comandos echo on muestra los comandos hasta que se encuentre un echo off.
echo nombre de fichero cambia el estado de echo en ese fichero.
echo on all muestra todos los comandos del fichero.
echo off all oculta los comandos.
pause Produce una pausa hasta que se oprime retorno.
- 19 -
INTRODUCCIÓN AL MATLAB
Capítulo 4. Funciones estándares (built in)
4.1 Funciones elementales matemáticas
Se llaman también de arreglos, pues si operan con matrices lo hacen término a término.
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 Raíz cuadrada
abs Valor absoluto, si es complejo devuelve la magnitud, si es un texto devuelve
los valores en ASCII.
conj Compleja conjugada
fix Parte entera
imag Parte imaginaria
real Parte real
round Redondea al entero inferior
sign Signo de función
rem Resto de la división Ej. rem(5,2) = 1
sin Seno
cos Coseno
tan Tangente
asin Arcoseno
acos Arcocoseno
atan Arcotangente
atan2 Arcotangente en los cuatro cuadrantes
exp Exponencial
log Logaritmo natural
log10 Logaritmo vulgar
Estas funciones operan sobre un escalar o a cada elemento de una matriz.
4.2 Funciones que manipulan datos
size(A) devuelve un vector de dos elementos que contiene el número de filas y el número de
columnas de la matriz A.
length (v) devuelve la longitud de un vector v.
- 20 -
INTRODUCCIÓN AL MATLAB
Las funciones siguientes devuelven un escalar si el argumento es un vector. Si es una matriz,
devuelven un vector fila con las operaciones de las columnas.
max Valor mayor
min Valor menor
sum Suma
cumsum Suma acumulativa
prod Producto de los elementos
cumprod Producto acumulativo
mean Valor medio
std Desviación estándar
median Devuelve el valor central
sort Ordena de forma ascendente.
4.3 Operadores de relación
< Menor que
<= Menor o igual que
= = igual a
~ = desigual a
> = mayor o igual a
> mayor que
Esta comparación se hace elemento a elemento y resulta en una matriz donde sus elementos son
0 cuando es falso y 1 cuando es verdadero.
Una función interesante y muy útil es la función find.
Su sintaxis es find (condición) y encuentra los índices de la matriz donde se cumple la
condición.
Supongamos:
A = [2 4 5 7 4]
B = find (A/2 = = fix (A/2) )
Dos funciones útiles para generar vectores son:
linspace(a, b, n) Genera un vector linealmente espaciado de a hasta b con n puntos.
logspace(a, b, n) Genera un vector con espaciado logarítmico desde 10
a
hasta 10
b
de
longitud n.
4.4 Operadores lógicos
& and
| or
- 21 -
INTRODUCCIÓN AL MATLAB
~ not
xor or exclusivo
Estas operaciones, igual que las de comparación, producen vectores y matrices con elementos
del tipo 0 - 1, del mismo tamaño que los operandos, con uno si la condición 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 apóstrofos, o sea, 'cadena'.
MATLAB manipula cualquier cadena como un vector cuyos elementos van a ser los caracteres
que forman la cadena en cuestión.
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 número de caracteres. Por ejemplo,
el comando
nombres = ['Juan'; 'Raul'; 'Ania'; 'Magy'],
Crea un vector columna con un elemento por fila, siendo para MATLAB la variable nombres,
una matriz de 4x4.
En caso de que sea necesario crear vectores columna cuyos elementos sean cadenas de
longitudes diferentes, se le adicionará a cada elemento (cadena) que así lo necesite, tantos
espacios en blanco como se requiera para lograr que la longitud de todos los elementos sea la
misma.
- 22 -
INTRODUCCIÓN AL MATLAB
Una forma más fácil 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,
adicionándole a cada fila el número de espacios en blanco que necesite.
Ejemplo:
equipos = str2mat ('monitor', 'impresora', ‘plotter')
eval Calcula el valor de una cadena numérica.
t = '3+2';
eval (t) produce
ans =
5
- 23 -
INTRODUCCIÓN AL MATLAB
Capítulo 5. Subprogramas. Fichero función
Fichero función. Es un fichero que contiene una función 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 tendría la siguiente sintaxis:
function [variables de salida] = Nombre de función(variables de entrada)
Veamos algunos detalles sobre las funciones.
1. En la primera línea se declaran el nombre de la función y los argumentos de entrada y de
salida. Sin esta línea se trataría de un fichero comando.
2. Las primeras líneas del fichero .m (después de la declaración de función) se imprimirán en
pantalla si se pide ayuda acerca de él, es decir, las que están precedidas por %.
3. Las variables que se usen, incluyendo las del cuerpo de la función, son locales.
4. La transferencia de los parámetros de entrada es por valor (por tanto pueden ser constantes)
y los de salida por nombre.
5. Pueden existir varios parámetros de entrada y varios de salida.
6. El nombre del fichero tiene que coincidir con el nombre de la función.
7. Cuando se tenga una sola variable de salida, no se requiere que ésta se encierre entre
corchetes en la línea de definición de la función, pero cuando se tengan varias variables de
salida esto si es necesario. Pueden no existir variables de salida.
Ejemplo 1. Escribir una función que calcule la hipotenusa de un triángulo rectángulo.
function c = pit (a, b)
%Se calcula según el teorema de Pitágoras
c = sqrt (a^2+b^2);
Con esta función 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 estándares del
MATLAB. Una forma práctica de averiguar esto es utilizar el comando exist ('nombre') el cual
devuelve 0 si no encuentra nada con ese nombre.
- 24 -
INTRODUCCIÓN AL MATLAB
Capítulo 6. Instrucciones estructuradas
6.1 Instrucción if
if <condición>
< secuencia de instrucciones 1>
[else
< secuencia de instrucciones 2>]
end
Si la condición 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 función 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 Instrucción switch
switch expresión del switch
case expresión
<secuencia de instrucciones 1>
case { expresión1, expresión2,...}
secuencia de instrucciones 2
........
[otherwise
secuencia de instrucciones]
end
La expresión del switch puede ser de cualquier tipo, incluso cadena. Note que si hay más de una
expresión deben escribirse entre llaves.
Ejemplo. Elaborar un programa que trace una sinusoide con la opción 1 y, con las opciones 2 y
3, trace una cosinusoide.
disp('1. Sinusoide');
disp('2. Cosinusoide');
disp('3. Cosinusoide');
n = input ('Teclee la opción ');
- 25 -
INTRODUCCIÓN 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 Instrucción 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 estén determinados por a(i, j) = 1/
(i+j-1)
m = input('Teclee el número de filas ');
n = input('Teclee el número de columnas ');
for i = 1: m
for j = 1:n
a(i, j) = 1/(i+j-1);
end
end
6.4 Instrucción while
while <condición>
< secuencia de instrucciones>
end
Ejemplo: Si existe un vector a de n elementos, averiguar si alguno de ellos es cero.
n = input('Cantidad de elementos de a ');
i=1;
while (a(i) ~ = 0) & (i < n)
i = i+1;
end
if a(i) = = 0
disp('Hay un cero al menos');
else
disp('No hay ceros');
end
- 26 -
INTRODUCCIÓN AL MATLAB
6.5 Estructuras o registros en MATLAB
En MATLAB existen también 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 programación, no hace falta
definir previamente el modelo o patrón 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 algún 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 más viejo.
%Encuentra el nombre del alumno mayor de un arreglo de registros
n = input('Cantidad de alumnos ');
for i = 1: n
alumno(i).nombre = input('Teclee el nombre ');
alumno(i).nota = input('Teclee la nota ');
alumno(i).edad = input('Teclee la edad ');
end;
m = alumno(1).edad;
for i = 2:n
if m<alumno(i).edad
m = alumno(i).edad;
p = i;
end
disp(alumno(p).nombre)
end
Una desventaja del uso de registros en MATLAB es que se pierden las bondades que posee con
el trabajo de matrices. Note que fue necesario usar un algoritmo para buscar el más viejo y no se
pudo usar, por ejemplo, la función max.
- 27 -
INTRODUCCIÓN AL MATLAB
Capítulo 7. Gráficos
7.1 Gráficos de una línea
Existen varios tipos de gráficos dependiendo del “papel” usado.
plot(x, y) gráfica lineal x vs. y.
loglog(x, y) gráfica loglog x vs. y
semilogx(x, y) gráfica eje x logarítmico
semilogy(x, y) gráfica eje y logarítmico
polar (theta, rho) gráfica polar
Se pueden “adornar” los gráficos.
title ('Texto') Para ponerle un título a una gráfica.
xlabel ('Texto') Nombre del eje de las abscisas.
ylabel ('Texto') Nombre del eje de las ordenadas.
grid Traza una malla.
text (x, y, 'Texto') Escribe ‘Texto’ en las coordenadas (x, y) del gráfico.
gtext ('Texto') Escribe ‘Texto’ en el gráfico donde se dé un click con el mouse.
leyend('Trazo1', …) Escribe la leyenda, cual es la correspondencia de cada uno de los trazos.
grid funciona como un switch. Si está puesta la malla la quita y viceversa. grid on la pone y
grid off la quita. Existen muchos comandos en MATLAB que funcionan de esta forma.
Si y es un vector, entonces plot (y) traza la gráfica de y contra el índice de y.
Si x y z son vectores de la misma longitud, entonces plot (x, z) traza la gráfica de z contra x.
Por ejemplo
wt = 0 : 0.1 : 4 * pi;
y = sin(wt);
plot(wt, y) %Produce la gráfica del sen(wt) de 0 a 4*pi radianes.
hold Mantiene o no la ventana gráfica para trazar otro gráfico. Es un switch, de manera que
existen hold on y hold off.
figure Permite abrir otra ventana gráfica y le pone el número consecutivo. Se puede abrir otra
ventana gráfica y asignarle el número n con figure(n).
7.2 Gráficos de varias líneas
Si y es una matriz y x es un vector, plot(x, y) produce un juego de gráficas de las filas o
columnas de y contra x. El hecho de que escoja filas o columnas depende de cuáles tienen el
mismo número de elementos que el vector x. Si y es cuadrada se toman las columnas.
- 28 -
INTRODUCCIÓN AL MATLAB
Si y es un vector y x es una matriz se trazan las gráficas de y contra cada columna o fila de x.
Si son matrices del mismo orden, se trazan las gráficas columnas contra columnas.
Si tenemos plot(y) siendo y una matriz, se obtienen las gráficas de cada columna contra su
índice.
Otra forma de hacer gráficos de varias líneas es:
plot (x
1
, y
1
, x
2
, y
2
, ..... , x
n
, y
n
)
Ésta tiene la ventaja de que se pueden obtener las gráficas de parejas de vectores de diferentes
tamaños en la misma ventana gráfica.
Los tipos de líneas se pueden definir:
plot(x, y, 'x') traza la gráfica con el símbolo x.
plot(x1, y1, ': ' , x2, y2, '+') dibuja la primera con : y la segunda con +.
Otros símbolos usados pueden ser: -, --, :, ~, . , +, *, o, x.. Puede agregársele otro carácter que
defina el color. Por ejemplo plot (x, y, 'y+'). Dibuja y contra x con el símbolo + y con el color
yellow. Los colores que se pueden usar son:
y - yellow m - magenta c - cyan g - green
r - red b - blue w - white k - black
Si y es complejo plot(y) es equivalente a plot(real (y), imag(y)). De otra manera se ignora la
parte imaginaria.
subplot Permite trazar varias gráficas en la misma ventana de gráficos.
subplot(m, n, k) define una matriz de ventanas de m filas y n columnas, es decir, dibuja m*n
gráficas en la misma ventana. k define en cuál 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. Más 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 parámetros
xmin, xmax, ymin, ymax.
Ejemplo:
axis([0 10 0 25]);
- 29 -
INTRODUCCIÓN AL MATLAB
7.3 Gráficas en el espacio
plot3(x, y, z) si x, y, z son vectores, traza una línea en el espacio tridimensional cuyos puntos
tienen como coordenadas los elementos de x, y, z.
Un ejemplo sería:
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 líneas.
mesh permite el trazado de superficies tridimensionales.
meshgrid establece el dominio de definición en el plano xy.
Un ejemplo sería:
[x, y] = meshgrid (-2: .2: 2, -2: .2: 2);
z = x .* exp(-x. ^ 2 - y. ^2);
mesh (z);
7.4 Borrado de textos en gráficos
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 gráfica con los comandos siguientes:
t = 0:0.1:10;
plot (t, sin(t));
xlabel ('Tiempo');
ylabel ('Respuesta');
Si ahora deseáramos borrar 'Tiempo', como indicador del eje x, debemos escribir:
v = xlabel ('Tiempo');
delete(v);
Por esta razón se recomienda que, cuando se escriba un texto en una gráfica, se realice
asignándole el valor de retorno a una variable, teniendo en cuenta la posibilidad del borrado
posterior, pues sería muy difícil hacerlo cuando la escritura se realizó con comandos, por
ejemplo, como text o gtext, es decir, en lugar de escribir text(2, 3, 'velocidad') se recomienda
escribir v = text(2,3,'velocidad').
se pueden realizar muchas acciones sobre los gráficos directamente desde la ventana gráfica,
por ejemplo, facilidades de edición, salvar, imprimir, etc.
- 30 -
INTRODUCCIÓN AL MATLAB
Capítulo 8. Algunos ejemplos
8.1 Solución 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. Función de Transferencia. (Cociente de polinomios en función del operador de Laplace).
ss Representación en Espacio de Estado.
zpk Polos, Ceros y Ganancia. (Cociente de polinomios en factores polos, ceros y ganancia).
Veremos algunos ejemplos de aplicación general, pero de particular importancia en el control
automático.
step es un comando que permite encontrar un vector con la respuesta a escalón.
y = step(num, den, t)
num y den son los vectores de los coeficientes del numerador y el denominador respectivamente
de la función de transferencia en orden descendente de s y t es un vector con los valores del
tiempo.
step(num, den) traza la gráfica de la respuesta directamente y MATLAB asume el tiempo.
Ejemplo 1. Se desea conocer la respuesta a escalón unitario de un sistema con función de
transferencia
G(s) = 10 / (s
2
+ 2s + 2)
num = [10];
den = [1 2 2];
t = 0: 0.1: 10;
y = step (num, den, t);
plot(t, y)
title('Respuesta a escalón')
xlabel('t')
ylabel('y')
grid
Está claro que las primeras 5 líneas se pudieron escribir según:
t = 0:0.1:10;
plot (t, step([10], [1 2 2], t))
Se pudo encontrar la respuesta a impulso unitario con la función impulse.
lsim Permite calcular respuestas a otro tipo de señales de entrada.
- 31 -
INTRODUCCIÓN AL MATLAB
Ejemplo 2.
Supongamos la función 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 conversión de modelos de sistemas.
tf2zp Convierte la función de transferencia normal a su expresión en ceros, polos y ganancia.
[z, p, k] = tf2zp (num, den)
Obtiene los ceros, los polos y la ganancia de la función de transferencia definida por num y den.
De forma inversa zp2tf obtiene los coeficientes del numerador y el denominador de la función
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 función de transferencia.
[num, den] = ss2tf (A, B, C, D, iu)
Se obtienen el numerador y el denominador de la función de transferencia conociendo las
matrices A, B, C y D del modelo de estado para la entrada i-ésima.
Además existen ss2zp, zp2ss y tf2ss.
Veamos algunos ejemplos
Ejemplo 3. Se desea obtener la respuesta del siguiente sistema para una entrada pulso dada por:
1 s s
2
) s ( G
2
+ +
·
a una entrada
¹
¹
¹
'
¹
≥ →
< ≤ →
< →
·
2 t 5 . 0
2 t 0 2
0 t 0
) t ( u
%Respuesta a un pulso en t=0
g = tf([2],[1,1,1]);
t = 0:0.01:15;
- 32 -
2
2
0.5
t
u(t)
INTRODUCCIÓN 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 función stepfun(t, t0), que genera un escalón unitario en t0, se
podría 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 función de transferencia a una función del tipo del ejemplo anterior, como se
muestra en la figura siguiente:
function y = respulso (num, den, a, b, c, d)
%num y den son el numerador y el denominador de la función de transferencia
%respectivamente.
%a es el peso inicial del pulso.
%b es el peso final del pulso.
%c es la duración del pulso.
%d es el tiempo de simulación.
t = 0:d/100:d;
u = a*ones (size (t));
for i = min (find (t>=2)):length (t)
u(i)=b;
end
y = lsim (num, den, u, t);
plot (t, u, t, y);
grid
- 33 -
d c
a
b
t
u(t)
INTRODUCCIÓN AL MATLAB
Si se hubiera escrito lsim (num, den, u, t) en la línea 6, se hubiera trazado la gráfica
directamente. Ahora se puede usar la función respulso dando los 6 parámetros: 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 función de transferencia G(s)=1/(s
2
+as+1), a un escalón unitario, variando el
parámetro a.
%Análisis de la respuesta de un sistema de 2do. orden, con función de transferencia %G(s)=1/
(s
2
+as+1), a un escalón unitario, variando el parámetro 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 escalón del circuito RLC que se muestra, suponiendo el
voltaje e como la entrada y el voltaje en el condensador como la salida.
La función de transferencia del circuito sería:
- 34 -
i
C
L R
e
Circuito RLC
INTRODUCCIÓN AL MATLAB
1 s RC s LC
1
) s ( E
) s ( V
2
c
+ +
·
Si suponemos R = 1 Ω , C= 1f, L = 1h podemos escribir
t = 0:0.1:10;
sys = tf([1],[1 1 1]);
plot (t, step (sys, t));
grid
Ejemplo 7. Resolver el problema anterior usando el modelo en el espacio de estado.
Si escribimos el modelo matemático según:
C
) t ( i
dt
dv
) t ( e
L
1
) t ( v
L
1
) t ( i
L
R
dt
di
c
c
·
+ − − ·

y suponemos todos los parámetros unitarios se obtendría el modelo de estado según:
1
]
1

¸
− −
·
0 1
1 1
A

1
]
1

¸

·
0
1
B
[ ] 1 0 C ·
[ ] 0 D ·
t = 0:0.1:10;
A=[-1 –1;1 0];
B=[1;0];
C=[0 1];
D=[0];
sys = ss (A, B, C, D);
y = step (sys, t);
plot (t, y);
grid
Veremos algunos ejemplos más donde introduciremos algunos comandos.
Ejemplo 8. Dado el sistema cuya función de transferencia se describe más abajo, determine los
polos y los ceros y sitúelos en el plano complejo s.

8 . 0 s 5 . 2 s 4 s 3 s
7 s 5 s 3
) s ( G
2 3 4
2
+ + + +
+ +
·
numG = [3 5 7];
denG = [1 3 4 2.5 0.8];
- 35 -
INTRODUCCIÓN AL MATLAB
[z, p, k] = tf2zp (numG, denG); % z, p y k son los ceros, polos y ganancia respectivamente.
pzmap (numG, denG); % Traza los ceros y los polos en el plano s.
% pzmap (p, z) Tiene el mismo resultado que la línea 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 expansión en fracciones parciales y
su respuesta a impulso.
1 s 5 s 4 s 2
2 s 3
) s ( G
2 3
+ + +
+
·
%Expansión 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 %término
no fraccionario.
impulse (sys); % Se obtiene directamente la gráfica de la respuesta a impulso.
MATLAB permite establecer, por comandos, la realimentación negativa.
Ejemplo 10. Encontrar la respuesta a escalón del sistema que se muestra.

donde

2 s 3 s 5
1 s 4
) s ( G
2
+ +
+
·
y
11 s 4 s
6 s
) s ( H
2
+ +
+
·
numG = [4 1]; denG = [5 3 2];
numH = [1 6]; denH = [1 4 11];
[numT, denT] = feedback (numG, denG, numH, denH);
step (numT, denT);
ltiview
Es un comando que permite acceder a un interfaz gráfico y visualizar diferentes respuestas de
sistemas LTI (Linear Time Invariant) y sus parámetros más importantes. Debemos definir
primeramente el sistema, por ejemplo, sys = tf (num, den) y luego ejecutar ltiview.
- 36 -
Y(s) U(s)
-
+
G(s)
H(s)
INTRODUCCIÓN AL MATLAB
Las respuestas pueden ser a escalón (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 sólo con condición inicial (initial).
8.2 Solución de ecuaciones diferenciales de manera numérica.
Se pueden resolver, de manera numérica, ecuaciones diferenciales de primer orden del tipo y’=
f(t, y) con el juego de funciones ode. El método de integración de menor orden es el ode23 y
MATLAB tiene muchos otros. Veamos un ejemplo.
Ejemplo 1.
Se quiere resolver la ecuación diferencial y’ = y + 4, con y(0) = 1, en el intervalo [0 2].
Creamos la función f.m
function yprima = f (t, y)
yprima = y+4;
Ahora podemos ejecutar los comandos
[t, y]=ode23 ('f ', [0 2], 1); % Resuelve la ecuación en el intervalo [0 2] con y(0) = 1. Se
%obtienen dos vectores: y, que es el vector solución y t, que es el vector del tiempo.
% La solución gráfica podría verse con el próximo comando.
plot (t, y)
Se hubiera podido graficar directamente si hubiéramos ejecutado:
ode23 ('f ', [0 2], 1);
Ejemplo 2.
Encontrar la respuesta al circuito RLC con entrada e y salida v
c
. Las ecuaciones serían:
C
i
v
'
c
·
;
L
v
L
Ri
L
e
i
c '
− − ·
Si suponemos todos los parámetros unitarios, las ecuaciones se simplifican:
i v
'
c
· ;
c
'
v i 1 i − − ·
Para resolver este sistema de ecuaciones debemos plantearlo en la forma y'= f(t, y). Haciendo un
cambio de variables según:
y' (1) = v
c
y(2) = i
- 37 -
INTRODUCCIÓN AL MATLAB
Las ecuaciones quedarían como
y(1) = y(2)
y' (2) = 1- y(2) - y(1)
Ahora creamos la función 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 obtendría la gráfica de la figura siguiente:
8.3 Solución simbólica de ecuaciones diferenciales.
Se pueden resolver, de manera simbólica, ecuaciones diferenciales ordinarias, para lo cual se
usa la función dsolve.
Ejemplo 1.
Se desea resolver la ecuación 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 condición inicial.
q =

-4+5*exp(t)
- 38 -
INTRODUCCIÓN AL MATLAB
De no escribirse la condición inicial la respuesta estaría en función de una constante.
Ejemplo 2.
Resolver la ecuación diferencial y’’ + y’ = 0 con y(0) = 1, y’(0) = -1.
q = dsolve ('D2y+Dy = 0', 'y(0) = 1', 'Dy(0) = -1' )
q =

1/exp(t)
Ejemplo 3.
Encontrar la respuesta al circuito RLC con entrada e y salida v
c
y con parámetros unitarios, es
decir, i v
'
c
· ;
c
'
v i 1 i − − · .
q = dsolve ('DVc = I', 'DI = 1-I-Vc', 'Vc(0) = 0', 'I(0) = 1');
MATLAB almacena los resultados en un registro con dos campos: Vc e I. Para ver el resultado
debemos escribir q.Vc. Con q.I obtendríamos 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 según:
) t ( e ) t ( v
dt
) t ( dv
RC
dt
) t ( v d
LC
c
c
2
c
2
· + + , es decir, 1 ) t ( v
dt
) t ( dv
dt
) t ( v d
c
c
2
c
2
· + +
q = dsolve ('D2Vc+DVc+Vc = 1', 'Vc(0) = 0', 'DVc(0) = 1')

q =

1-exp(-1/2*t)*cos(1/2*t*3^(1/2))+1/3*3^(1/2)*exp(-1/2*t)*sin(1/2*t*3^(1/2))
Para resolver ecuaciones algebraicas se usa la función solve.
- 39 -
INTRODUCCIÓN AL MATLAB
8.4 Integración numérica
Con el objetivo de introducirnos en algunas otras posibilidades del MATLAB mostraremos un
ejemplo interesante. Supongamos que creamos la función 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 obtendría la gráfica siguiente:
Lo primero que se va a hacer es calcular la integral definida de esta función entre dos valores de
la abscisa x. En inglés, al cálculo numérico de integrales definidas se le llama quadrature.
Sabiendo eso, no resulta extraño el comando con el cual se calcula el área comprendida bajo la
función entre los puntos 0 y 1 (obsérvese que el nombre de la función a integrar se pasa entre
apóstrofos, como cadena de caracteres):
area = quad ('prueba', 0, 1)
area =
29.8583
La función quad8() utiliza un método de orden superior (Newton-Cotes), mientras que la
función dblquad() realiza integrales definidas dobles. Ver el help o los manuales on-line para
más información.
- 40 -
INTRODUCCIÓN AL MATLAB
8.5 Ecuaciones no lineales y optimización
Después de todo, calcular integrales definidas no es tan difícil. Más difícil es, desde luego,
calcular las raíces de ecuaciones no lineales y el mínimo o los mínimos de una función.
MATLAB dispone de las tres funciones siguientes:
fzero calcula un cero o una raíz de una función de una variable
fmin calcula el mínimo de una función de una variable
fmins calcula el mínimo de una función de varias variables
Se empezará con el cálculo de raíces. Del gráfico de la función prueba entre -1 y 2 resulta
evidente que dicha función tiene dos raíces en ese intervalo. La función fzero calcula una. ¿Cuál
es la que calcula? Pues depende de un parámetro o argumento que indica el punto de partida
para buscar la raíz. Véanse 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 solución
encontrada ha sido -0.1316. En el segundo caso ha empezado a buscar en el punto de abscisa 2 y
ha encontrado otra raíz en el punto 1.2995. Se ven claras las limitaciones de esta función. La
función fzero() tiene también otras formas interesantes:
fzero('prueba', [x1, x2]) calcula una raíz en el intervalo x1-x2. Es necesario que la función tenga
distinto signo en los extremos del intervalo.
fzero('prueba', x, tol) calcula la raíz más próxima a x con una tolerancia tol para el error.
Ahora se va a calcular el mínimo de la función prueba. Defínase una función llamada prueba2
que sea prueba cambiada de signo, y trátese de reproducir en el PC los siguientes comandos y
resultados (para calcular máximos con fmin bastaría con cambiar el signo de la función):
plot(x, prueba2(x))
fmin('prueba2', -1, 2)
ans =
0.3004
fmin('prueba2', 0.5,1)
ans =
0.8927
- 41 -
INTRODUCCIÓN AL MATLAB
8.6 Integración simbólica
También es posible obtener integrales de manera simbólica.
Ejemplo 1.
syms x %Declara x como una variable simbólica
int(1/(x^2+1))
ans =
atan(x)
Está claro que se pueden integrar también 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 también integrales iteradas.
Ejemplo 3.
syms t
q = int (int (t))
q =
1/6*t^3
Se pueden realizar integraciones entre límites simbólicos o constantes.
Ejemplo 4.
syms x a b
int (x, a, b)
ans =
1/2*b^2-1/2*a^2
Ejemplo 5.
int (x, 1, a)
ans =
1/2*a^2-1/2
- 42 -
INTRODUCCIÓN 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 también las llamadas funciones sym, tales como Heaviside (escalón) y Dirac
(impulso).
Ejemplo 2. Calcular la transformada de Laplace de f(t) = t
2
u(t-1).
syms t
F = laplace (t^2*sym ('Heaviside (t-1)' ))
F =

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

Sign up to vote on this title
UsefulNot useful