MATLAB 6.1
ANÁLISIS NUMÉRICO, MATEMÁTICA SIMBÓLICA Y
VISUALIZACIÓN GRÁFICA
para ciencias e ingeniería
1.- OBJETIVO:
Una característica importante del manejo de números con MATLAB® es que no hay
distinción entre reales, complejos, enteros, de precisión sencilla o precisión doble.
Todos estos números, en MATLAB, están conectados continuamente, como debe ser.
Esto significa que en MATLAB cualquier variable puede contener números de cualquier
tipo sin una declaración especial durante la fase de programación, lo cual hace ésta más
fácil, rápida y productiva. En otros programas, Fortran por ejemplo, se requiere la
declaración de una subrutina distinta para cada tipo de variable sencilla o doble, real o
compleja o entera, mientras que con MATLAB no es necesario el separarlas.
todo el mundo, siendo tantos y tan variados los campos de conocimientos, que se hace
prácticamente imposible el aprender a usar todo el programa en si.
2.-¿QUE ES MATLAB ?
Entre las áreas para las cuales existen “Cajas de Herramientas” o “Toolboxes” se tienen,
entre otros, los siguientes campos: Procesamiento de Señales, Control de Procesos,
Sistemas de Identificación, Comunicaciones, Sistemas de Adquisición de Datos,
Matemática Simbólica, Diseños de Filtros (Analógicos o Digitales), Finanzas, Lógica
Difusa, Redes Neuronales, Procesamiento de Imágenes, Realidad Virtual, Estadísticas,
Optimización, etc.
Además existe otra Ventana de llamado especial y la cual permite hacer uso de uno de
los comandos especiales de MATLAB, el comando DEMOS. Esta ventana se llama
desde la Ventana de Comandos a través de la ejecución de la siguiente instrucción:
>> help demos
Edit: presenta los submenús tradicionales de Windows: Undo; Redo; Cut; Copy; Paste;
Paste Special; Select All, Delete., y adicionalmente los siguientes:
Clear Command Window: limpia la Ventana de Comandos, llevando el >>
a la parte superior izquierda de la pantalla.
Clear Comand History: borra el historial de comandos.
Clear Workspace: borra la variables introducidas en la Ventana de Comandos.
En esta barra de herramientas tal como puede observarse, se encuentran los menús que
dan acceso a funciones tradicionales de Windows y que permiten acceder a las variables
que se encuentran en la Ventana de Comandos, así como para visualizar y modificar
rutas de acceso, iniciar trabajo con el Simulink, conectarse a páginas web en busca de
apoyo técnico, abrir los comandos de ayuda propia de programa, etc.
(display format) se presentan las opciones: loose (deja espacio en blanco después de
cada instrucción ejecutada); compact (no deja espacio después de cada instrucción
ejecutada).
"HELP TOPIC" gives help on the specified topic. The topic can be a
command name, a directory name, or a MATLABPATH relative partial
pathname (see HELP PARTIALPATH). If it is a command name, HELP
displays information on that command. If it is a directory name,
HELP displays the Table-Of-Contents for the specified directory.
For example, "help general" and "help matlab/general" both list
the Table-Of-Contents for the directory toolbox/matlab/general.
LOOKFOR XYZ looks for the string XYZ in the first comment line
of the HELP text in all M-files found on the MATLABPATH. For all
files in which a match occurs, LOOKFOR displays the matching lines.
Versión: uno de los primeros conocimientos que el usuario de MATLAB debe tener
sobre el programa, es la versión que está usando, para obtener ésta información se hace
uso del comando version
>> version
ans =
6.1.0.450 (R12.1)
>>
El comando clock da como resultado de su ejecución: el año, mes, día, hora, minuto y
segundo, en un formato de vector fila: [año, mes, día, hora, minuto, segundo].
>> clock
ans =
1.0e+003 *
>>
ans =
2003 2 1 12 22 40
>>
ans =
01-Feb-2003
>>
Una manera de familiarizarse con el ambiente de MATLAB y aprender a trabajar con el,
es mediante la utilización y estudio de las demostraciones que trae el programa.
Seguidamente se presentan algunas de ellas:
Nota: Todas las instrucciones que se han ejecutado desde la Ventana de Comandos, tal
como puede observarse, se han escrito en minúsculas, ello motivado a que ésta es la
forma predeterminada de MATLAB. Si las instrucciones o comandos de ejecución se
escriben en mayúsculas, el programa emitirá un mensaje de error :
>> CLEAR
??? Capitalized internal function CLEAR; Caps Lock may be on.
4.1.- Cálculos con una Variable Simple : El programa MATLAB permite la ejecución de
cálculos de parámetros a través de operaciones matemáticas que realiza en forma
secuencial, es decir conforme se vaya n introduciendo los comandos o instrucciones y los
datos respectivos. Como ejemplo, se considerará el caso en que se quiere calcular el
volumen de una esfera de radio r (es importante el tener en cuenta que al definir
variables al programa, el mismo diferencia entre letras mayúsculas y letras minúsculas.
Para MATLAB la variable r es diferente de la variable R). La formula que permite el
cálculo del volumen de una esfera de radio r, es la siguiente:
4
vol = * π * r 3
3
si el radio de la esfera es 2, la ejecución con MATLAB es la siguiente:
vol =
33.5103
En ésta ejecución puede observarse que, después de la declaración bien sea de datos o
instrucción de ejecución aparece el signo ; el cual permite que una vez pulsada la tecla
ENTER, la variable y el valor declarado no aparezcan en la ventana una vez que han
sido registrados. De igual forma puede introducirse un comentario después del signo %
Para obtener el valor del resultado se le solicita al programa escribiendo la
correspondiente variable a calcular (vol en éste caso) y pulsando la tecla ENTER.
MATLAB solamente acepta una instrucción por línea, pero en una misma línea puede
escribirse dos o más instrucciones si se separan cada una por medio del signo ; . Se debe
pulsar la tecla ENTER cada vez que se requiera la ejecución de una línea de instrucción
o comando.
vol =
33.5103
vol =
33.5103
En este caso se están escribiendo las dos instrucciones en una sola línea de instrucción,
separadas por ;. Puede observarse que la segunda parte de la línea de instrucción no
finaliza con ; por lo que el resultado de la operación aparece una vez pulsada la tecla
ENTER.
Si se quiere que aparezcan como registrados los datos y variables cada vez que se
introduce una línea de instrucción, se efectúa la operación de la forma siguiente:
r=
vol =
33.5103
r=
vol =
33.5103
puede observarse en este caso que las instrucciones se separan por una coma (,) lo que
permite escribir dos o más instrucciones en la misma línea.
>> a=125;b=235;c=100;d=456;
>> x=(a+b)*c-d
x=
35544
>> y=(a/b-c)*d
y=
-4.5357e+004
>> Y=a/b
Y=
0.5319
>> Z=b\a
Z=
0.5319
>>
4.3.- Operadores Lógicos: Los operadores lógicos: mayor que, mayor o igual que, menor
que, menor o igual que, diferente de, se representan en MATLAB según la siguiente
simbología:
a1 , 1 a1 , 2 . . a1 , n
a2 , 1 a2 , 2 . . a2 , n
A := .
. . . .
. . . . .
am, 1 a . . a
m, 2 m, n
Vector Fila:
B := b( 1, 1
b
1, 2
. . b
1, n )
Vector Columna:
c1 , 1
c2 , 1
C := .
.
c
n, 1
IUTAI “Región los Andes”
BMV.-bemevi@telcel.net.ve
20
a=
2 5 1 7 4
b=
3
2
4
6
8
y=
3 2 1
2 3 5
6 5 4
.- para definir los elementos de un fila, se introducen los datos separados por un espacio
simple (también se puede declarar separando los datos por una coma (,)).
.- para definir los elementos de una segunda, tercera, etc. fila se introducen los datos
respectivos separados de la fila precedente por un punto y coma (;).
Otra forma de declarar una matriz en MATLAB es abriendo corchete, introduciendo los
datos correspondientes a cada fila, terminándola con <ENTER> y cerrando la última
fila con el cierre respectivo del corchete. Tal como puede observarse a continuación:
>> c=[3 4 5
269
8 6 2]
c=
3 4 5
2 6 9
8 6 2
c=
6 15 24 18 6
.- Suma de dos vectores: en este caso los vectores deben ser del mismo tipo (vector fila o
vector columna) y tener el mismo número de elementos.
c=
5 9 9 8 10
.- Multiplicación punto a punto (elemento por elemento) entre dos vectores: realiza la
multiplicación término a término de los elementos de dos vectores de igual dimensión.
c=
8 9 30
c=
8 64 216 125
ct =
3
5
2
7
9
3
ans =
8
ans =
8
c=[2 3 5 7 8 19 12 6 7 6];
>> d=c(2:7) % captura en un arreglo d los valores c(1,2) al c(1,7), es decir del C(2)al c(7)
d=
3 5 7 8 19 12
.- Selección de todos los elementos de un vector: la notación x(:) permite capturar todos
los elementos que constituyen el arreglo vectorial x, previamente fijado.
d=
1
3
5
7
9
2
4
6
8
10
12
>> c=(3:0.5:6); % construye un vector con valor entre 3 y 6 con incrementos de 0.5
>> c
c=
3.0000 3.5000 4.0000 4.5000 5.0000 5.5000 6.0000
>> d=linspace(-pi,pi,10) % entrega vector fila con 10 valores linealmente distribuidos entre -pi
y +pi
d=
-3.1416 -2.4435 -1.7453 -1.0472 -0.3491 0.3491 1.0472 1.7453 2.4435 3.1416
>> d=logspace(0,3,8)
d=
1.0e+003 *
>> p=[zeros(1,6) 3 5 1 8]
p=
0 0 0 0 0 0 3 5 1 8
.- Construcción de un vector con los n primeros valores nulos (ceros) y los m valores
finales iguales a la unidad. En el ejemplo siguiente se construye un vector con 12
elementos, de los cuales lo seis primeros son iguales a ceo y los seis últimos iguales a la
unidad.
Uk =
0 0 0 0 0 0 1 1 1 1 1 1
Ek =
1 1 1 1 1 0 0 0 0 0 0 1 1 1 1
.- Construcción de un vector con los elementos de dos o más vectores dados: Es posible
construir un nuevo vector con los elementos de dos o más vectores previamente
declarados, utilizando el principio de unión de conjuntos, el orden de los elementos del
nuevo vector será conforme se declaren los vectores en el arreglo respectivo.
z=
1 4 3 5 2 8 7 6 1
c=
63
d=
6 10 14 4
12 20 28 8
15 25 35 10
3 5 7 2
a=
3 6 2
1 3 5
4 8 9
1 7 2
d=
12 24 8
4 12 20
16 32 36
4 28 8
a=
2 3 4
5 4 3
3 4 9
6 4 3
b=
5 8 3
9 7 4
5 4 2
9 8 5
c=
7 11 7
14 11 7
8 8 11
15 12 8
d=
6 20 40
42 32 18
c=
1 4 9
16 25 36
49 64 81
*.- Llamado de un elemento de la matriz: dada una matriz a es posible operar con un
elemento de ésta matriz haciéndole un llamado según la notación a(i,j).
a=
1 2 3 4
5 6 7 8
9 10 11 12
c=
7
c=
1.0000 2.0000 3.0000 4.0000
5.0000 6.0000 7.0000 8.0000
10.0000 2.0000 + 3.0000i 11.0000 4.0000 + 2.0000i
d=
2.0000 + 3.0000i 11.0000 4.0000 + 2.0000i
d=
9.0000 + 3.0000i 3.0000 - 5.0000i 8.0000
d=
0 + 4.0000i
8.0000 + 2.0000i
8.0000
*.- Extracción de todos los elementos de una o varias filas de una matriz x: la notación
x(fila,:) permite la extracción o selección de todos los elementos de una fila,
asignándolos a una variable en forma de vector fila, mientras que la notación
x(:,columna) permite la extracción de todos los elementos de una columna,
asignándolos a una variable en forma de vector columna.
d=
8 9 1
p=
3
6
9
IUTAI “Región los Andes”
BMV.-bemevi@telcel.net.ve
30
la notación a(filap:filaz,:) permite extraer todos los elementos desde la fila p hasta la fila
z, de la matriz a, asignándolo s a una variable en forma de matriz de dimensión según las
filas indicadas y la notación a(:,columnap:columnaz ) permite extraer todos los
elementos desde la columna p hasta la columna z, de la matriz a, asignándolos a una
variable en forma de matriz de dimensión según las columnas indicadas.
a=
2 3 12 4 5
8 45 32 12 14
23 56 76 91 10
16 34 52 74 11
>> p=a(1:3,:) % asigna los elementos desde la fila 1 hasta la fila 3 de a a la variable p
%p
p=
2 3 12 4 5
8 45 32 12 14
23 56 76 91 10
f=
12 4
32 12
76 91
52 74
a=
8 9 2
3 4 5
1 6 7
b=
8 3 1
9 4 6
2 5 7
A=
B=
D=
.- División punto a punto de dos matrices: la notación a./b divide elemento entre
elemento de las matrices a y b
a=
4 8 10
6 12 16
b=
2 4 5
3 6 8
>> c=a./b
c=
2 2 2
2 2 2
.- Generación de una matriz unitaria: la notación eye(n) permite editar una matriz
unitaria de orden n x n.
.- Generación de una matriz con elementos unitarios: la notación ones(n) edita una
matriz con elementos unitarios de orden n x n, mientras que la notación ones(m,p) edita
una matriz con elementos unitarios de orden m x p.
>> y=ones(4)
y=
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> z=ones(3,4)
z=
1 1 1 1
1 1 1 1
1 1 1 1
.- Generación de una matriz con elementos nulos: la notación zeros(n) edita una matriz
con elementos nulos de orden n x n, mientras que la notación zeros(n,p) edita una matriz
con elementos nulos de orden n x p.
>> y=zeros(3)
y=
0 0 0
0 0 0
0 0 0
>> z=zeros(3,4)
z=
0 0 0 0
0 0 0 0
0 0 0 0
A=
12 15 23 32
45 26 31 21
61 37 55 12
A=
12 15 23 32
61 37 55 12
A=
12 15 32
61 37 12
IUTAI “Región los Andes”
BMV.-bemevi@telcel.net.ve
34
a=
2 4 7
3 1 6
b=
3 4
5 2
8 6
>> c=a*b
c=
82 58
62 50
>> d=b*a
d=
18 16 45
16 22 47
34 38 92
.- Inverso de una matriz: dada una matriz A, la notación inv(A) permite el cálculo de la
inversa de la matriz A. inv(A) = A-1, cumpliéndose que inv(A)*A = I, con I = matriz
identidad. La matriz A debe ser una matriz cuadrada.
A=
3 4 5
7 2 1
8 9 6
B=
0.0278 0.1944 -0.0556
-0.3148 -0.2037 0.2963
0.4352 0.0463 -0.2037
>> I=B*A
I=
1.0000 -0.0000 -0.0000
0 1.0000 0.0000
0 0 1.0000
>> Ia=A*B
Ia =
1.0000 0.0000 0
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
puede observarse que la matriz I = Ia, lo que demuestra que A*A-1 = A-1*A = I.
3 * x + 2 * y − 4 * z = 12
2 * x − 2 * y + 5 * z = 10
4 * x + 3 * y − 4 * z = 18
3 2 −4
A := 2 −2 5
4 3 −4
x
b := y
z
12
c := 10
18
b=
4.3564
-0.0990
0.2178
y = c1 x n + c 2 x n −1 + c 3 x n − 2 + .......... + c n x + c n +1
donde n es el orden del polinomio (potencia más alta) y los ci son los coeficientes. Un
polinomio puede también expresarse en forma factorizada según la siguiente expresión:
y=[5 0 2 0 3 0]
y=
5 0 2 0 3 0
lo cual indica que los coeficientes de las potencias de orden 4, 2 y 0 son nulos.
r=
-0.2500 + 0.9682i
-0.2500 - 0.9682i
0.5000
y=
1.0000 0 0.7499 -0.5000
el resultado entregado por el programa se interpreta como que las raíces declaradas en
vector columna r son las del polinomio definido por la siguiente relación:
y = x 3 + 0.7499 x − 0.5 . Puede observarse que las raíces declaradas en el vector r son
las correspondientes a las del vector del ejemplo anterior (cálculo de raíces de un
polinomio) y que los valores de los coeficientes corresponden a los valores del
polinomio declarado en ese ejemplo divididos por 4. Ello se debe a que un polinomio
determinado a partir exclusivamente de sus raíces sigue siendo arbitrario en cuanto a un
multiplicador constante. Para poder determinar un polinomio de orden n se requieren
n+1 puntos de datos, pero el número de raíces de un polinomio es sólo n; por ello,
MATLAB normaliza los coeficientes de modo que el primero sea la unidad. Aunque las
conversiones de coeficientes a raíces y viceversa son fáciles con MATLAB debe de
tenerse cuidado en lo que se refiere a la exactitud de los cálculos. La conversión tiende a
ser menos exacta si hay múltiples raíces.
yi =
23.8125
yi =
1.0e+003 *
0 0.0238 0.0760 1.0560
.- Suma de polinomios: definidos dos o más polinomios del mismo orden, la operación
suma de los mismos se obtiene con la notación: p1 + p 2 + …+ pn
pr =
3 6 6 8
pq =
6 24 18 -12 0
pe =
20
pp =
3 0 4 0 2
dp =
1.0000 0 0 1.5000
>> [dp,r]=deconv(p1,p2)
dp =
1.0000 0 0 1.5000
r=
0 0 0 0 0.5000 5.0000
dy =
10.0000 4.0000 1.5000 4.8000 3.0000
ip =
0.3333 0.6000 1.2500 0 0.5000 7.0000 0
ipc =
0.3333 0.6000 1.2500 0 0.5000 7.0000 2.0000
nf ( x)
esta función se puede definir de la forma siguiente: f ( x) =
df ( x)
donde nf(x) define el polinomio del numerador de f(x) y df(x) define el polinomio del
denominador. Es decir:
nf ( x ) = 4 x 2 + 2x − 1 y df ( x ) = 5 x 4 + 6 x 3 + 4 x 2 − 3x − 5
polinomios que pueden ser declarados al MATLAB para análisis de la función f(x), tales
como determinación de polos y ceros, descomposición en fracciones parciales, etc.
ceros =
-0.8090
0.3090
polos =
0.7887
-0.5369 + 1.0477i
-0.5369 - 1.0477i
-0.9148
r=
-0.0385 - 0.2932i
-0.0385 + 0.2932i
-0.0490
0.1261
p=
-0.5369 + 1.0477i
-0.5369 - 1.0477i
-0.9148
0.7887
k=
[]
IUTAI “Región los Andes”
BMV.-bemevi@telcel.net.ve
43
r=
-0.0320
-0.0396 - 0.3326i
-0.0396 + 0.3326i
0.1111
p=
-1.4656
0.2328 + 0.7926i
0.2328 - 0.7926i
-0.5000
k=
[]
>> [numFs,denFs]=residue(r,p,k)
numFs =
0 0.5000 1.0000 0.5000
denFs =
1.0000 1.5000 0.5000 1.0000 0.5000
>> 4*numFs
ans =
0 2.0000 4.0000 2.0000
>> 4*denFs
ans =
4.0000 6.0000 2.0000 4.0000 2.0000
fx =
2*exp(-x).*sin(x)
.- Evaluación de una función con MATLAB: la notación eval(fx) evalúa la función f(x)
para un valor de x previamente declarado. Considerando la función definida en el aparte
anterior se tiene:
fx =
2*exp(-x).*sin(x)
x=2.1, eval(fx)
x=
2.100
ans =
0.2114
lo cual se interpreta como que: para un valor de x = 2.1 la función f(x) = 0.2114.
>> fx
fx =
2*exp(-x).*sin(x)
>> [xmin,fval]=fminbnd(fx,1,5)
xmin =
3.9270
fval =
-0.0279
lo cual se interpreta como que el valor mínimo de la función f(x) para los valores de x
comprendidos entre 1 y 5, es de -0.0279 y se obtiene cuando x = 3.9270.
.- Ceros de una función: la notación [xo fval] = fzero(fx,b) calcula el valor de x más
próximo al escalar b para el cual la función tiende a cero.
>> fx
fx =
2*exp(-x).*sin(x)
xo =
3.1416
fval =
-2.7797e -017
6.- Gráficas con MATLAB: El programa MATLAB utiliza los comandos “plot” y
“stem” para la graficar func iones con una o más variables independientes. Tanto el
comando “plot(x,y)” como el comando “stem(x,y)” evalúan cada columna de un
arreglo como un grupo de datos.
Las notaciones: xlabel(‘titulo eje x’) y ylabel(‘titulo eje y’) permiten rotular cada uno
de los ejes de la gráfica y title(‘titulo’) permite titular la gráfica.
x=linspace(0,2*pi,50);
y=sin(x); w=cos(x);
plot(x,y,x,w),xlabel('eje x'),ylabel('eje y')
title('titulo de grafica')
En el trazado de varias gráficas en la misma ventana, el programa por defecto usa líneas
sólidas de colores azul, verde, rojo, celeste, violeta, amarillo, negro y blanco
sucesivamente.
Las siguientes notaciones, despúes de declarar el comando plot o stem, permiten operar
una gráfica obtenida con MATLAB: