Professional Documents
Culture Documents
Octubre 2014
Contenido
I.
Qu es MATLAB? ........................................................................................................ 4
I.1 La ventana de comando. ................................................................................................ 5
I.2 Comandos principales ................................................................................................... 8
II.
III.
I.
Qu es MATLAB?
Clculos numricos
Desarrollo de algoritmos
Funcin
Numeric Format
Editor Preference
Help Directory
Echo On
Show Toolbar
Enable
Debugging
Command
muestra el Debugger.
Window Especifica las caractersticas del tipo de letra para el texto que se
Font
Copying Options
Funcin
help
helpwin
lookfor
helpdesk
doc
figure
close
who
whos
which
cd
pwd
Para asignar un escalar a una variable, se introducen los datos de la siguiente forma
usar punto y coma (;) para indicar el fin de una columna o el fin del vector
0.7143
1.6236 -0.6918
0.8580}
-1.3362
0.7143
1.6236
-0.6918
0.8580]
y MATLAB despliega
0.2944
-1.3362
0.7143
1.6236
-0.6918
0.8580
16 3 2 13
5 10 11 8
A=
9 7 6 12
4 15 14 1
Respuesta. Teclear en la lnea de comando
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
13
10
11
12
15
14
Nmeros
Variables
Operadores
Funciones
11
II.1.1 Nmeros
MATLAB utiliza una notacin decimal convencional con punto decimal opcional y el signo
menos para indicar nmeros negativos. La notacin cientfica utiliza la letra e para
especificar el factor de escala en potencias de 10. Los nmeros imaginarios utilizan ya sea
la i o la j como sufijo. A continuacin se presentan varios nmeros permitidos.
99
0.0001
9.6397238
1.60210e20
6.02252e23
1i
3.14159j
3e5i
Todos los nmeros se almacenan internamente usando el formato long especificado por el
estndar en punto flotante IEEE. Los nmeros en punto flotante tienen una precisin finita
aproximadamente de 16 dgitos decimales y un rango finito aproximadamente de 10-308 a
10-308.
II.1.2 Variables
MATLAB, a diferencia de la mayora de los lenguajes de programacin no requiere de
ningn tipo de declaraciones de tipo de datos (entero, punto flotante, complejos, etc) ni de
dimensionamiento. Cuando MATLAB encuentra una nueva variable, automticamente crea
la variable y reserva la cantidad de localidades de memoria necesarias. Si la variable ya
exista dentro del espacio de trabajo actual, simplemente cambia el contenido, si se
requiere, o de ser necesario agrega ms localidades de memoria a la variable para contener
ms datos.
Esta variable crea una matriz de 1 x 1 llamada Num y almacena el valor de 25. MATLAB
es case sensitive, es decir distingue entre maysculas y minsculas; es decir A y a no son la
misma variable.
12
II.1.3 Operadores
Las expresiones utilizan los operadores aritmticos comunes. Los operadores aritmticos
son los mismos que en cualquier lenguaje de programacin y se sigue un orden de
evaluacin similar al que se utiliza en los dems lenguajes de programacin. En la Tabla
II.1 se muestran los operadores aritmticos ms comunes en MATLAB.
Operacin matemtica
Suma
Resta
Multiplicacin
Divisin
Potencia
()
II.1.4 Funciones
MATLAB proporciona un gran nmero de funciones matemticas simples y avanzadas. La
gran mayora de estas funciones acepta argumentos complejos. Las funciones ms
comunes, como sqrt y sin son parte del ncleo de MATLAB y estn programadas en bajo
nivel para hacerlas ms eficientes y no es posible acceder a su cdigo. El resto de las
funciones est programada en archivos M y su cdigo est disponible para revisiones o
modificaciones.
Muchas funciones especiales proporcionan o requieren valores de constantes tiles.
MATLAB incorpora constantes matemticas y cierta simbologa, la cual se muestra en la
Tabla II.2.
13
Significado
pi
3.14159265
Unidad imaginaria,
Igual que i
eps
realmin
realmax
Inf
Infinito
NaN
No es un nmero
II.1.5 Expresiones
A continuacin se presentan algunos ejemplos de programacin de expresiones
Ejemplo. Calcular:
(1 + 5 )
2
Es necesario teclear:
rho = (1+sqrt(5))/2
rho =
1.6180
Ejemplo. Calcular 3 + 4i
a = abs(3+4i)
a =
5
14
unitarios, matrices o vectores cero, etc. En la Tabla II.3 se muestran algunos comandos que
generan matrices.
Funcin
Zeros
Ones
Rand
Randn
Ejemplo. Generar una matriz de 3 columnas por 3 renglones con todos sus elementos igual
a 5.
F = 5*ones(3,3)
F =
5
15
Ejemplo. Generar una matriz de 4 x 4 con nmeros aleatorios con distribucin normal.
R = randn(4,4)
R =
-0.4326
-1.1465
0.3273
-0.5883
-1.6656
1.1909
0.1746
2.1832
0.1253
1.1892
-0.1867
-0.1364
0.2877
-0.0376
0.7258
0.1139
Ejemplo: Generar una matriz de 4 x 4 con nmeros aleatorios con distribucin normal;
crear un archivo que la contenga y posteriormente cargarla en un espacio de trabajo vaco.
r=randn(4,4)
r =
0.4282
0.0403
-0.3775
0.1184
0.8956
0.6771
-0.2959
0.3148
0.7310
0.5689
-1.4751
1.4435
0.5779
-0.2556
-0.2340
-0.3510
save datos r
clear all
load datos.mat
16
who
Your variables are:
r
r
r =
0.4282
0.0403
-0.3775
0.1184
0.8956
0.6771
-0.2959
0.3148
0.7310
0.5689
-1.4751
1.4435
0.5779
-0.2556
-0.2340
-0.3510
II.3.4 Concatenacin
La concatenacin es el proceso de unir pequeas matrices o vectores para crear otra matriz
o vector de mayor tamao. Este proceso ya se ha usado en algunos de los ejemplos
anteriores al concatenar elementos individuales para formar vectores o matrices mediante el
operador concatenacin, formado por el par de corchetes, [].
Ejemplo. Formar dos vectores de 4 elementos y concatenarlos para formar un solo vector
de 8 elementos.
a=[1 2 3 4];
b=[5 6 7 8];
c=[a b]
c =
1
Ejemplo. Formar una matriz de 2 renglones por 4 columnas con los vectores a y b del
ejemplo anterior.
d=[a; b]
d =
1
II.3.5 Condicionales
Las instrucciones condicionales permiten ejecutar secciones de cdigo o subrutinas una vez
que se satisface cierta condicin. Dentro de este grupo de instrucciones se encuentran if,
else y elseif.
17
II.3.6 Ciclos
Los ciclos son una herramienta bsica en la programacin presente en Matlab, dentro de las
instruciones relacionadas con los ciclos se encuentran: for, while, continue, break.
18
El punto y coma se utiliza para evitar que se desplieguen en pantalla los resultados. Pruebe
con el siguiente cdigo, sin el punto y coma
for n=1:1:10,
x(n)=n
end
x
Las matrices tambin pueden generarse con ciclos for anidados, como se muestra en el
siguiente cdigo:
for m=1:5,
for n=1:5,
y(m,n)= m+n;
19
end
end
y
despliega:
y =
2
10
Cuando se manejan ciclos anidados se recomienda utilizar sangra para alinear el for con el
end
correspondiente.
La rutina se ejecuta mientras el contador n sea menor a 10, al incumplirse esta condicin, se
termina el ciclo.
20
Crea una grfica bidimensional continua con escala lineal en ambos ejes
Stem
Crea una grfica bidimensional muestreada con escala lineal en ambos ejes
plot3
stem3
Loglog
Semilogx Crea una grfica bidimensional continua con escala logartmica en el eje x y
escala lineal en el eje y
Semilogy Crea una grfica bidimensional continua con escala logartmica en el eje y y
escala lineal en el eje x
0.8
0.8
0.6
0.6
t = nT
0.4
0.2
0.4
0.2
-0.2
-0.2
x(t)
-0.4
-0.6
-0.8
x(n)
-0.4
-0.6
-0.8
-1
0
10
15
20
25
30
35
-1
0
10
15
20
25
30
35
x(t ) = A cos(2 f s t )
123
x(n) = A cos(2 f s nT )
x(n) = A cos(2
fs
n)
fm
{
f
x(n) = A cos(2 f n)
123
x(n) = A cos( n)
donde:
es la frecuencia analgica en radianes/seg
f =
fs
es la frecuencia normalizada f 0.5
fm
Ejemplo. Generar una seal senoidal de amplitud 3, a una frecuencia de 250 Hz. Usar 32 muestras y
una frecuencia de muestreo de 8 KHz. Graficar de forma continua y de forma discreta.
n=0:1:31;
xn=3*sin(2*pi*n*250/8000);
plot(n,xn); title('Grafica continua');
Con las instrucciones anteriores MATLAB genera la grfica mostrada en la figura III.2
Grafica continua
3
-1
-2
-3
10
15
20
25
30
35
Grafica discreta
3
-1
-2
-3
10
15
20
25
30
35
Ejemplo. Generar una seal cosenoidal de 23 muestras de amplitud unitaria de 250 y una seal
senoidal del mismo nmero de muestras y frecuencia. Usar una frecuencia de muestreo de 8 KHz.
n = 0:1:31;
s1 = cos(2*pi*n*250/8000);
s2 = sin(2*pi*n*250/8000);
plot(n,s1,n,s2)
En la figura III.4 se muestra el resultado de este ejercicio. El mismo procedimiento se aplica para los
dems comandos. MATLAB automticamente asigna colores diferentes para cada grfica.
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
15
20
25
30
35
El comando axis permite fijar los lmites de los ejes en una grfica y la opcin square fija las
coordenadas iguales en los tres ejes. En la figura III.5 se muestra la grfica resultante.
35
30
25
20
15
10
5
0
1
0.5
1
0.5
0
0
-0.5
-0.5
-1
-1
Ejemplo. Graficar 100 muestras de la secuencia y = seno (0.2n) utilizando una escala horizontal
logartmica. En la figura III.6 se muestra el resultado.
n=0:1:99;
seno=sin(0.2*n);
semilogx(n,seno)
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
10
10
10
El comando mesh grafica mediante superficies delimitadas por lneas de color de acuerdo a la
posicin en el eje z. El comando surf funciona de manera anloga, solo que adems despliega las
caras de la superficie comprendida entre las lneas que forman la grfica en color. En la Tabla III.2
se mencionan estos comandos y otros ms.
Comando
Funcin
mesh, surf
contour
meshc, surfc
pcolor
surfl
surface
IV.1 Scripts
Los scripts son la clase ms simple de archivos M, no tienen argumentos de salida. Los scripts son
muy tiles para automatizar los comandos de MATLAB cuando resulta muy engorroso hacerlo
desde la lnea de comando. Los scripts operan en el espacio de trabajo existente o pueden crear
nuevas variables; es decir pueden usar cualquier variable que este presente en el espacio o crear
nuevas variables que queden disponibles al terminar de ejecutar el script para nuevos clculos.
clear all;
theta = pi:0.01:pi;
rho(1,:) = 2*sin(5*theta).^2;
rho(2,:) = cos(10*theta).^3;
rho(3,:) = sin(theta).^2;
rho(4,:) = 5*cos(3.5*theta).^3;
for i = 1:4
polar(theta,rho(i,:))
pause
end
Una vez que termine la ejecucin del archivo M, las variables, i, theta y rho permanecen en el
espacio de trabajo. Para ver las variables presentes en el espacio de trabajo, teclear who.
IV.2 Funciones
Las funciones son archivos M que aceptan argumentos de entrada y de salida. Las funciones operan
dentro de su propio espacio de trabajo, el cual generan al ejecutarse y al cual no se puede acceder
desde el espacio de trabajo de MATLAB.
Ejemplo. Teclee las siguientes lneas en el Editor/Debugger de MATLAB. Esta funcin calcula el
promedio de los elementos de un vector
function y = promedio(x)
% PROMEDIO Calcula la media de los elementos de un vector
% PROMEDIO(X), donde X es el vector, es la media de los elementos del vector
% Si la entrada no es un vector, se produce un error.
[m,n] = size(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error(Input must be a vector)
end
y = sum(x)/length(x); % Clculo del promedio
La funcin PROMEDIO acepta un vector como argumento de entrada y regresa un solo valor como
argumento de salida. Para probar la funcin, teclear las siguientes lneas.
z = 1:99;
promedio(z)
ans =
50
y = promedio(z)
Existe un formato corto para la declaracin de variables. Para esto se utiliza la variacin syms:
>> syms x;
Esto nos dar el mismo resultado que la declaracin anterior. La funcin syms incluso permite
declarar varias variables de forma simultnea:
>> syms x y z;
Se puede formar una expresin simblica utilizando la funcin sym, sin antes haber declarado las
variables que la conforman, por ejemplo:
>> g = sym(sin(y));
2) Con variables declaradas
Con una variable declarada anteriormente, se pueden formar tambin expresiones simblicas:
>> syms y;
>> g = sin(y);
En ambos casos, la expresin resultante ser la misma. Tambin se pueden incluir constantes u otras
variables simblicas en la expresin, por ejemplo:
>> g = sym(sin(2*pi*f*y));
En el caso de que la expresin contenga ms de una variable simblica, se debe de indicar con
respecto de cual variable se realizar la derivacin. Ejemplo:
>> syms A x;
>> y = A*x^3
y = A*x^3
Igual que en el caso de la derivacin, cuando la expresin contiene varias variables, se debe
de indicar con respecto de cul de ellas se integrar:
>> sym A x;
>> y = A*sin(x)
y = sin(x)
V.4 Graficacin
Para graficar expresiones simblicas, normalmente se utilizara la funcin ezplot. En la
figura IV.1 se muestra el resultado de graficar una senoidal simblica.
>> sym t;
>> y = sin(t)
y = sin(t)
>> ezplot(y);
sin(t)
0.5
-0.5
-1
-6
-4
-2
0
t
0.5
-0.5
-1
0
10
12
14
16
18
Ejercicio
Graficar una suma de senoides y(t) = 3 sin(2t) + 5 sin(3.5t)
En Matlab, la funcin heaviside nos permite obtener una representacin simblica del
escaln unitario tecleando lo siguiente (ver la figura VI.3):
>> syms t;
>> u=heaviside(t);
>> ezplot(u,[-2 10]);
heaviside(t)
0.8
0.6
0.4
0.2
-2
4
t
10
dirac(t)
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-6
-4
-2
0
t
En este caso, si graficamos la funcin dirac (ver figura VI.4), no se podr apreciar el
impulso debido a que su duracin es prcticamente nula. Sin embargo, su utilizacin es
necesaria al momento de conocer la respuesta de sistemas mediante la convolucin.
>> syms a s;
>> Y = 1/(s+a);
>> y = ilaplace(Y)
y = 1/exp(a*t)
Entonces, si se transforman las seales del dominio del tiempo al dominio s utilizando
Laplace, se realiza la multiplicacin para obtener Y(s), y se antitransforma, se obtendr la
seal y(t) que es el resultado de la convolucin. Ejemplo:
>> X = laplace(x);
>> H = laplace(h);
Por lo tanto, el resultado de la convolucin de las seales x(t) y h(t) para este ejemplo, en
notacin comn, es:
Si se desea observar la seal obtenida, se grafica con el comando ezplot y que se muestra en
la figura VI.5:
>> ezplot(y)
heaviside(t - 1) (t - 1) -...+ heaviside(t - 5) (t - 5)
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
1
1.5
2.5
3
t
3.5
4.5
Ejercicio. Obtener la convolucin grfica de f(t) con h(t), las cuales se muestran en la
figura VI.6.
h(t)
, correspondiente a la casilla Mu y
correspondiente a
seleccionada la opcin CDF en Function type, se obtienen los valores de las Tablas de
Distribucin de Probabilidad tradicionales.
Figura VI.2. Interfaz grfica para una distribucin Binomial acumulada con n = 10 y p =
0.5.
la distribucin Binomial:
Figura VI.3. Interfaz grfica para una distribucin Binomial con n = 10 y p = 0.5.
en una
Distribucin Binomial con los mismos parmetros del caso anterior, se puede resolver de la
siguiente forma
Al analizar la Figura VII.4, se puede observar que el resultado se obtiene de restar del rea
menor
al rea mayor
, para
y se desea hallar
y aplicando la definicin
En la Figura VII.5 se muestra cmo se puede resolver este problema mediante la interfaz
grfica. Se introduce el parmetro de la media poblacional en la casilla Mu, en este caso la
media es de 5, en la casilla X se introduce el valor de 10 y en la casilla Probability se
despliega el resultado, en este caso 0.86466.
Por otra parte, si el problema pidiera la probabilidad de que el tiempo de respuesta sea de al
menos 10 segundos, es decir
. Esto
mientras que en la casilla Mu se introduce el valor de 10. Para a), se pone en la casilla X el
se observa que
con N(10,2.1).
que
por
lo
que
con N(10,2.1).
MATLAB (manual que forma parte del Mdulo para desarrollo de prcticas de
Procesamiento Digital de Seales, proyecto de investigacin del CITEDI-IPN), CITEDIIPN, Departamento de Posgrado, 1999-2000.
[3] The MathWorks Inc., Getting Started with MATLAB Version 5.x
[6] The MathWorks Inc., Manuales de las siguientes herramientas (toolboxes): Control,
Fuzzy Logic, Signal Processing, Data Acquisition, Building GUIs in Matlab.
[8] Nakamura, Shoichiro, Anlisis numrico y visualizacin grfica con Matlab, Pearson
Educacin