curso matlab
DESCRIPTION
MANUAL PARA MATLAB , DE GRAN UTILIDAD EN MATERIAS COMO SEÑALES Y SISTEMAS .TRANSCRIPT
Universidad Autónoma de Baja California
Facultad de Ciencias Químicas e Ingeniería
Matlab como herramienta de apoyo en la enseñanza de
las matemáticas
M. C. José Jaime Esqueda Elizondo
M. C. Marco Antonio Pinto Ramos
M. C. Laura Jiménez Beristáin
I. E. Pedro Adame Valdéz
Octubre 2014
2
Contenido
I. ¿Qué es MATLAB? ........................................................................................................ 4
I.1 La ventana de comando. ................................................................................................ 5
I.2 Comandos principales ................................................................................................... 8
II. Escalares, vectores y matrices ..................................................................................... 10
II.1 Expresiones en MATLAB ......................................................................................... 11
II.1.1 Números .................................................................................................................. 12
II.1.2 Variables ................................................................................................................. 12
II.1.3 Operadores .............................................................................................................. 13
II.1.4 Funciones ................................................................................................................ 13
II.1.5 Expresiones ............................................................................................................. 14
II.2 Generación de matrices .............................................................................................. 14
II.3 Comandos save y load ............................................................................................... 16
II.3.4 Concatenación ......................................................................................................... 17
II.3.5 Condicionales ......................................................................................................... 17
II.3.6 Ciclos ...................................................................................................................... 18
II.3.6.1 Ciclos for .......................................................................................................... 19
II.3.6.2 Ciclos while ..................................................................................................... 20
III. Graficación en MATLAB y generación de secuencias discretas ............................. 20
III.1 Generación de secuencias discretas. ......................................................................... 21
III.2 Graficación en dos dimensiones. .............................................................................. 22
III.3 Generación de gráficas en tres dimensiones ............................................................ 24
III.4 Generación de gráficas semilogarítmicas y logarítmicas. ........................................ 25
III.5 Graficación de matrices como superficies ................................................................ 26
IV. Simulación usando archivos –M .............................................................................. 28
IV.1 Scripts ....................................................................................................................... 28
IV.2 Funciones ................................................................................................................. 29
V. Introducción a matemáticas simbólicas en MATLAB .................................................... 30
V.1 Declaración de variables ........................................................................................ 30
V.2 Expresiones simbólicas .......................................................................................... 30
V.3 Cálculo diferencial e integral ................................................................................. 31
3
V.4 Graficación ............................................................................................................ 32
V.5 Funciones especiales .............................................................................................. 33
V.6 Transformada de laplace ........................................................................................ 34
V.7 Convolución continua ............................................................................................ 35
VI. Herramienta Disttool ...................................................................................................... 38
VI.1 Distribución Binomial .......................................................................................... 38
VI.2 Función Densidad de Probabilidad exponencial .................................................. 41
VI.3 Función Densidad de Probabilidad Normal o Gaussiana ..................................... 42
VII. Bibliografía y Referencias ........................................................................................ 44
4
I. ¿Qué es MATLAB?
MATLAB es un lenguaje de alto desempeño diseñado para realizar cálculos
técnicos. MATLAB integra el cálculo, la visualización y la programación en un ambiente
fácil de utilizar donde los problemas y las soluciones se expresan en una notación
matemática. MATLAB es un sistema interactivo cuyo elemento básico de datos es el
arreglo que no requiere de dimensionamiento previo. Esto permite resolver muchos
problemas computacionales, específicamente aquellos que involucren vectores y matrices,
en un tiempo mucho menor al requerido para escribir un programa en un lenguaje escalar
no interactivo tal como C o Fortran.
MATLAB se utiliza ampliamente en:
• Cálculos numéricos
• Desarrollo de algoritmos
• Modelado, simulación y prueba de prototipos
• Análisis de datos, exploración y visualización
• Graficación de datos con fines científicos o de ingeniería
• Desarrollo de aplicaciones que requieran de una interfaz gráfica de usuario (GUI,
Graphical User Interface).
En el ámbito académico y de investigación, es la herramienta estándar para los cursos
introductorios y avanzados de matemáticas, ingeniería e investigación. En la industria
MATLAB es la herramienta usada para el análisis, investigación y desarrollo de nuevos
productos tecnológicos.
La ventaja principal de MATLAB es el uso de familias de comandos de áreas
específicas llamadas toolboxes. Lo más importante para los usuarios de MATLAB es que
los toolboxes le permiten aprender y aplicar la teoría. Los toolboxes son grupos de
comandos de MATLAB (archivos M) que extienden el ambiente de MATLAB para
resolver problemas de áreas específicas de la ciencia e ingeniería. Por ejemplo, existen
toolboxes para las áreas de Procesamiento Digital de Señales, Sistemas de Control, Redes
Neuronales, Lógica Difusa, Wavelets, etc.
5
I.1 La ventana de comando.
La ventana de comando es la ventana principal, con la cual el usuario interactúa con
MATLAB. Es la primer ventana que se abre al ejecutar MATLAB. Se utiliza para correr
los comandos, correr el editor de archivos M (MEDIT, presente en la barra de
herramientas), ejecutar los toolboxes, etc. En la figura I.1 se muestra la ventana de comando
de Matlab y algunas otras. Esta ventana cambia de acuerdo a la configuración que se tenga
preestablecida.
Figura I.1 La ventana principal de Matlab; a la derecha se muestra la
ventana.
La barra de herramientas proporciona un acceso fácil y rápido a las operaciones más
comunes. Al colocar el puntero del ratón sobre algún botón durante un par de segundos,
MATLAB despliega un tooltip, el cual da el nombre del botón ha seleccionado. En la figura
I.2 se muestra la barra de herramientas y las opciones que contiene.
6
Figura I.2 La barra de herramientas y su descripción.
A través de la barra de menús se accede a las operaciones que no están disponibles en la
barra de herramientas. El menú principal es File, en el se encuentra la gran mayoría de las
operaciones no presentes en la barra de herramientas. El la figura I.3 se muestra el menú
File.
Figura I.3 El menú File.
La opción Preferences permite fijar las opciones de despliegue de los resultados y de la
forma de operación de la ventana de comando. En la figura I.4 se muestra la ventana con la
que responde MATLAB al seleccionar la opción Preferences.
7
Figura I.4 Ventana desplegada por la opción Preferences.
En esta ventana se aprecian las opciones General, Command Window y Figure Copy
Template, entre otras. En la Tabla I.1 se muestran las opciones presentes y se explica su
uso.
8
Tabla I.1 Opciones de la ventana Preferences.
General Función
Numeric Format Determina el formato numérico por omisión dentro de las opciones
mostradas.
Editor Preference Especifica que editor de texto se usará para crear archivos M, las
opciones son: el propio de MATLAB o alguno seleccionado por el
usuario.
Help Directory Especifica el directorio donde se encuentran los archivos de ayuda
de MATLAB.
Echo On Desactiva el eco de los archivos M, es decir, no despliega mensajes.
Show Toolbar Muestra o esconde la barra de herramientas en la ventana de
comando.
Enable Graphical
Debugging
Al llegar a cada punto marcado (breakpoint), automáticamente
muestra el Debugger.
Command Window
Font
Especifica las características del tipo de letra para el texto que se
despliega en la ventana de comando.
Copying Options Especifica las opciones por omisión para copiar objetos de
MATLAB al portapapeles de Windows para pasar datos o gráficas a
otras aplicaciones.
I.2 Comandos principales
En la Tabla I.2 se enlistan los comandos más comunes de la plataforma de simulación
MATLAB. Dentro de estos comandos se encuentran aquellos que realizan búsquedas, la
ayuda en línea, desplegar las variables presentes en el espacio de trabajo, entre otras.
9
Tabla I.2 Comandos más comunes de MATLAB
Comando Función
help Ayuda en línea. Despliega líneas de texto en la ventana de comando
conteniendo la descripción sobre un comando específico
helpwin Despliega una ventana con la descripción específica de un comando y
permite ver información sobre otros temas relacionados
lookfor Busca en la ayuda de todos los comandos la clave espeficada
helpdesk Realiza una búsqueda en hipertexto en un buscador Web proporcionando
un acceso directo a toda la documentación: PDFs, información sobre la
solución de problemas, etc
doc Despliega en un buscador Web la página de referencia para el comando
especificado, proporciona una descripción, referencias adicionales y
ejemplos del comando especificado
figure Crea una nueva gráfica
close Cierra una gráfica
who Despliega las variables presentes en el espacio de trabajo
whos Despliega las variables presentes en el espacio de trabajo en extenso.
which Indica la ruta en donde se encuentra la función especificada
cd Cambia la ruta al subdirectorio superior
pwd Despliega la ruta en donde se encuentra el directorio de trabajo actual
10
II. Escalares, vectores y matrices
La mejor manera de familiarizarse con MATLAB consiste en aprender a manejar
las matrices. En MATLAB, una matriz es un arreglo rectangular de números. Las matrices
de 1x1 se conocen como escalares, y las matrices con una sola columna o renglón se
conocen como vectores. Estas matrices y/o vectores pueden contener datos tanto numéricos
como no numéricos.
Los datos pueden introducirse a MATLAB de diferentes maneras:
• como una lista explícita de elementos
• cargando los datos de un archivo externo
• generados por otras funciones
• creados por archivos M creados por el usuario.
Para asignar un escalar a una variable, se introducen los datos de la siguiente forma
Ejemplo. Dar a la variable dato el valor 2001
» dato = 2014
y MATLAB responde de la siguiente manera:
dato =
2014
Para introducir una matriz o un vector, se siguen los siguientes convencionalismos
• separar los elementos de una columna usando espacios en blanco
• usar punto y coma (;) para indicar el fin de una columna o el fin del vector
• encerrar la lista de elementos con paréntesis rectangulares [ ]
Ejemplo. Si se desea introducir el siguiente vector
y = 0.2944 -1.3362 0.7143 1.6236 -0.6918 0.8580
Teclear en la línea de comando:
» y = [0.2944 -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
Ejemplo. Si se desea introducir la siguiente matriz
11
=
114154
12679
811105
132316
A
Respuesta. Teclear en la línea de comando
» A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
MATLAB responde de la siguiente manera:
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Una vez que se he introducido la matriz en la línea de comando, esta permanece en
el espacio de trabajo, y para invocarla solo es necesario teclear A para referirse al arreglo de
números.
II.1 Expresiones en MATLAB
MATLAB como cualquier lenguaje de programación proporciona expresiones
matemáticas, pero a diferencia de la mayoría de ellos, las expresiones matemáticas que
maneja involucran matrices completas.
Las expresiones se dividen en:
• Números
• Variables
• Operadores
• Funciones
12
II.1.1 Números
MATLAB utiliza una notación decimal convencional con punto decimal opcional y el signo
menos para indicar números negativos. La notación científica utiliza la letra e para
especificar el factor de escala en potencias de 10. Los números imaginarios utilizan ya sea
la i o la j como sufijo. A continuación se presentan varios números permitidos.
Ejemplo. Números permitidos
3 –99 0.0001
9.6397238 1.60210e–20 6.02252e23
1i –3.14159j 3e5i
Todos los números se almacenan internamente usando el formato long especificado por el
estándar en punto flotante IEEE. Los números en punto flotante tienen una precisión finita
aproximadamente de 16 dígitos decimales y un rango finito aproximadamente de 10-308
a
10-308
.
II.1.2 Variables
MATLAB, a diferencia de la mayoría de los lenguajes de programación no requiere de
ningún tipo de declaraciones de tipo de datos (entero, punto flotante, complejos, etc) ni de
dimensionamiento. Cuando MATLAB encuentra una nueva variable, automáticamente crea
la variable y reserva la cantidad de localidades de memoria necesarias. Si la variable ya
existía dentro del espacio de trabajo actual, simplemente cambia el contenido, si se
requiere, o de ser necesario agrega más localidades de memoria a la variable para contener
más datos.
Ejemplo. Definición de variables.
» Num = 25
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 mayúsculas y minúsculas; es decir A y a no son la
misma variable.
13
II.1.3 Operadores
Las expresiones utilizan los operadores aritméticos comunes. Los operadores aritméticos
son los mismos que en cualquier lenguaje de programación y se sigue un orden de
evaluación similar al que se utiliza en los demás lenguajes de programación. En la Tabla
II.1 se muestran los operadores aritméticos más comunes en MATLAB.
Tabla II.1 Operadores aritméticos usados en MATLAB
Operador Operación matemática
+ Suma
- Resta
* Multiplicación
/ División
^ Potencia
‘ Transpuesta compleja conjugada
( ) Especifica el orden de evaluación
II.1.4 Funciones
MATLAB proporciona un gran número de funciones matemáticas simples y avanzadas. La
gran mayoría de estas funciones acepta argumentos complejos. Las funciones más
comunes, como sqrt y sin son parte del núcleo de MATLAB y están programadas en bajo
nivel para hacerlas más eficientes y no es posible acceder a su código. El resto de las
funciones está programada en archivos M y su código está disponible para revisiones o
modificaciones.
Muchas funciones especiales proporcionan o requieren valores de constantes útiles.
MATLAB incorpora constantes matemáticas y cierta simbología, la cual se muestra en la
Tabla II.2.
14
Tabla II.2 Constantes y simbología incorporada en MATLAB.
Constante Significado
pi 3.14159265…
i Unidad imaginaria, 1−
j Igual que i
eps Precisión relativa en punto flotante, 2-52
realmin Número más pequeño representable en punto flotante, 2-1022
realmax Número más grande representable en punto flotante, (2-e) 21023
Inf Infinito
NaN No es un número
II.1.5 Expresiones
A continuación se presentan algunos ejemplos de programación de expresiones
Ejemplo. Calcular:
( )2
51+=ρ
Es necesario teclear:
»rho = (1+sqrt(5))/2
rho =
1.6180
Ejemplo. Calcular i43 +
»a = abs(3+4i)
a =
5
II.2 Generación de matrices
Muchos de los comandos de MATLAB permiten generar vectores o matrices de datos de
algunas características. Por ejemplo, secuencias aleatorias con cierta distribución, escalones
15
unitarios, matrices o vectores cero, etc. En la Tabla II.3 se muestran algunos comandos que
generan matrices.
Tabla II.3 Comandos que generan matrices básicas
Comando Función
Zeros Todos los elementos de la matriz son ceros
Ones Todos los elementos de la matriz son unos
Rand Genera una matriz con de elementos con distribución uniforme
Randn Genera una matriz con elementos con distribución normal
Ejemplo. Generar una matriz de ceros de 2 renglones por 4 columnas
»Z = zeros(2,4)
Z =
0 0 0 0
0 0 0 0
Ejemplo. Generar una matriz de 3 columnas por 3 renglones con todos sus elementos igual
a 5.
»F = 5*ones(3,3)
F =
5 5 5
5 5 5
5 5 5
Ejemplo. Crear un vector de 10 valores aleatorios entre 0 y 9 con distribución normal
»N = fix(10*rand(1,10))
N =
9 2 6 4 8 7 4 0 8 4
Nota: el comando fix redondea el valor al entero inferior inmediato.
16
Ejemplo. Generar una matriz de 4 x 4 con números aleatorios con distribución 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
II.3 Comandos save y load
El comando save guarda una variable en un archivo binario de la siguiente forma:
»save nombrearchivo variable(s)
Si no se especifica ninguna variable, guarda todas las variables presentes en el espacio de
trabajo. El comando save crea un archivo en formato .mat.
Por otra parte, el comando load carga un archivo en el espacio de trabajo actual de la
siguiente forma:
» load nombarch.dat
El archivo carga en el espacio de trabajo todas las variables presentes al momento de
guardar el archivo. Este comando también puede cargar archivos de texto que contengan
números (números en código ASCII, con extensión .dat)
Ejemplo: Generar una matriz de 4 x 4 con números aleatorios con distribución normal;
crear un archivo que la contenga y posteriormente cargarla en un espacio de trabajo vacío.
» 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
17
» 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 Concatenación
La concatenación es el proceso de unir pequeñas matrices o vectores para crear otra matriz
o vector de mayor tamaño. Este proceso ya se ha usado en algunos de los ejemplos
anteriores al concatenar elementos individuales para formar vectores o matrices mediante el
operador concatenación, 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 2 3 4 5 6 7 8
Ejemplo. Formar una matriz de 2 renglones por 4 columnas con los vectores a y b del
ejemplo anterior.
» d=[a; b]
d =
1 2 3 4
5 6 7 8
II.3.5 Condicionales
Las instrucciones condicionales permiten ejecutar secciones de código o subrutinas una vez
que se satisface cierta condición. Dentro de este grupo de instrucciones se encuentran if,
else y elseif.
18
La instrucción if evalúa una expresión lógica y ejecuta un grupo de instrucciones si la
expresión es verdadera. Las instrucciones opcionales elseif y else permiten la
ejecución de un grupo de instrucciones alternativas. La instrucción if se cierra con una
instrucción end.
La forma general de la instrucción if es:
if expresión
instrucciones
elseif
instrucciones
else
instrucciones
end
Ejemplo. El siguiente código compara dos números, x, y y despliega un mensaje en la
ventana de comando indicando cual es mayor.
if x>y,
disp('x es mayor a y')
elseif x<y,
disp('x es menor a y')
else
disp('x es igual a y')
end
Las tres posibilidades en este ejemplo son mutuamente exclusivas
II.3.6 Ciclos
Los ciclos son una herramienta básica en la programación presente en Matlab, dentro de las
instruciones relacionadas con los ciclos se encuentran: for, while, continue, break.
19
II.3.6.1 Ciclos for
Los ciclos for permiten la ejecución de un conjunto de instrucciones o rutina un número
predefinido de veces. La instrucción for debe ir acompañada de una instrucción end para
delimitar las instrucciones a repetir. La sintaxis básica para un ciclo for es la siguiente
for n=1:1:10,
x(n)=n;
end
x
donde n es la variable índice del contador, el cual inicia en 1, se incrementa de 1 en 1 hasta
llegar al 10, de la siguente forma: indice = inicio: incremento o paso: final. Si se
omite el incremento, se asume que es de 1 en 1. Pruebe con el siguiente código:
for n=1:10,
x(n)=n;
end
x
El punto y coma se utiliza para evitar que se desplieguen en pantalla los resultados. Pruebe
con el siguiente código, sin el punto y coma
for n=1:1:10,
x(n)=n
end
x
Las matrices también pueden generarse con ciclos for anidados, como se muestra en el
siguiente código:
for m=1:5,
for n=1:5,
y(m,n)= m+n;
20
end
end
y
despliega:
y =
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10
Cuando se manejan ciclos anidados se recomienda utilizar sangría para alinear el for con el
end correspondiente.
II.3.6.2 Ciclos while
El ciclo while ejecuta una rutina mientras se cumpla una condición. Al igual que el ciclo
for, se cierra el ciclo con un end. Como ejercicio se presenta el siguiente ejemplo:
n= 1;
while n<10
x(n)= n
n=n+1;
end
La rutina se ejecuta mientras el contador n sea menor a 10, al incumplirse esta condición, se
termina el ciclo.
III. Graficación en MATLAB y generación de secuencias
discretas
MATLAB grafica directamente en una ventana diferente a la ventana de comando. Dentro de
MATLAB a esta ventana se le conoce como figura (figure). Las funciones de graficación
automáticamente crean una nueva ventana si no existe ninguna previa, de lo contrario, la ventana
designada como ventana actual es usada por MATLAB para generar la nueva gráfica, borrando así la
anterior. Generalmente la ventana actual es la última ventana a la cual se le hizo clic con el ratón.
Para referirse a una ventana generada anteriormente solo es necesario teclear figure(x), donde x
representa el número de identificación de la ventana presente en la parte superior de la misma. En la
Tabla III.1 se enlistan los comandos básicos de graficación.
Tabla III.1 Comandos básicos de graficación en dos y tres dimensiones.
Comando Función
Plot Crea una gráfica bidimensional continua con escala lineal en ambos ejes
Stem Crea una gráfica bidimensional muestreada con escala lineal en ambos ejes
plot3 Crea una gráfica tridimensional análoga a plot
stem3 Crea una gráfica tridimensional análoga a stem
Loglog Crea una gráfica bidimensional continua con escalas logarítmicas en ambos
ejes
Semilogx Crea una gráfica bidimensional continua con escala logarítmica en el eje x y
escala lineal en el eje y
Semilogy Crea una gráfica bidimensional continua con escala logarítmica en el eje y y
escala lineal en el eje x
Ejemplo. Generar una señal senoidal de amplitud unitaria
» t=0:pi/100:2*pi;
» seno2=sin(t);
» figure
» plot(t,seno2)
III.1 Generación de secuencias discretas.
Una señal continua x(t) se convierte a una señal discreta x(n) de la siguiente forma:
)()( nxtx ⇒
En la figura III.1 se muestra el proceso de conversión de una señal continua a una señal discreta.
x(t)
t = nT
x(n)
0 5 10 15 20 25 30 35-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 5 10 15 20 25 30 35-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Figura III.1 Generación de secuencias discretas.
donde T = al periodo de muestreo y T
f m
1= es la frecuencia de muestreo.
)2cos()( tfAtx s321Ω
⋅= π
)2cos()( nTfAnx s ⋅⋅= π
)2cos()( nf
fAnx
f
m
s ⋅⋅= π
)2cos()( nfAnx ⋅⋅=321
ω
π
)cos()( nAnx ⋅= ω
donde:
Ω es la frecuencia analógica en radianes/seg
m
s
f
ff = es la frecuencia normalizada 5.0≤f
sf es la frecuencia de la señal en Hertz
sf⋅= πω 2 es la frecuencia digital en radianes
TΩ=ω es la frecuencia digital en radianes, πωπ ≤≤−
III.2 Graficación en dos dimensiones.
Es posible generar gráficas bidimensionales con los comandos plot y stem usando dos vectores con
datos, uno para el eje horizontal, x y otro para el eje vertical, y.
Estos comandos funcionan de la siguiente manera.
» plot(x, y)
Ejemplo. Generar una señal 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 gráfica mostrada en la figura III.2
0 5 10 15 20 25 30 35-3
-2
-1
0
1
2
3Grafica continua
Figura III.2. Gráfica de la señal contínua usando el comando plot.
» stem (n,xn)
» title ('Grafica continua');
5 10 15 20 25 30 35
-2
-1
0
1
2
3Grafica discreta
0-3
Figura III.3. Gráfica de la señal discreta generada con el comando stem.
Es posible graficar varias secuencias en la misma gráfica usando el comando plot. Esto se muestra
en el siguiente ejemplo.
Ejemplo. Generar una señal cosenoidal de 23 muestras de amplitud unitaria de 250 y una señal
senoidal del mismo número 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
demás comandos. MATLAB automáticamente asigna colores diferentes para cada gráfica.
0 5 10 15 20 25 30 35-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Figura III.4 Graficación de dos secuencias en la misma figura usando el comando
plot.
III.3 Generación de gráficas en tres dimensiones
La graficación en tres dimensiones es análoga a la graficación en dos dimensiones. Para el caso
tridimensional, se tienen los vectores x, y y z, entonces para generar la gráfica solo es necesario
teclear
» plot3(x,y,z)
Ejemplo. Generar una gráfica tridimensional de una helicoidal.
» t = 0:pi/50:10*pi;
» plot3(sin(t),cos(t),t)
» axis square; grid on
El comando axis permite fijar los límites de los ejes en una gráfica y la opción square fija las
coordenadas iguales en los tres ejes. En la figura III.5 se muestra la gráfica resultante.
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
5
10
15
20
25
30
35
Figura III.5 Gráfica helicoidal resultante.
III.4 Generación de gráficas semilogarítmicas y logarítmicas.
Los comandos semilogx, semilogy y loglog funcionan de manera similar al comando plot, solo que
usan una escala logarítmica y una lineal para los comandos semilogx y semilogy, mientras que
loglog utiliza ambas escalas logarítmicas.
Ejemplo. Graficar 100 muestras de la secuencia y = seno (0.2n) utilizando una escala horizontal
logarítmica. En la figura III.6 se muestra el resultado.
» n=0:1:99;
» seno=sin(0.2*n);
» semilogx(n,seno)
100
101
102
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Figura III.6 Gráfica semilogarítmica de y = seno (0.2*n).
III.5 Graficación de matrices como superficies
MATLAB define una superficie con los puntos de coordenadas sobre el eje z sobre una rejilla
rectangular sobre el plano x-y. Esta gráfica se forma al unir puntos adyacentes con líneas rectas. Las
gráficas de superficie son muy útiles para visualizar matrices demasiado grandes para desplegarlas
de forma numérica o graficarse en forma de funciones de dos variables. Los comandos principales
que realizan esta función son mesh y surf.
El comando mesh grafica mediante superficies delimitadas por líneas de color de acuerdo a la
posición en el eje z. El comando surf funciona de manera análoga, solo que además despliega las
caras de la superficie comprendida entre las líneas que forman la gráfica en color. En la Tabla III.2
se mencionan estos comandos y otros más.
Tabla III.2 Comandos de graficación de tres dimensiones.
Comando Función
mesh, surf Genera gráficas de superficie
contour Genera gráficas de trazas de nivel
meshc, surfc Genera gráficas de superficie con trazas de nivel en el plano
inferior
pcolor Genera una gráfica plana de superficie en la cual el valor es
proporcional al color
surfl Genera una gráfica de superficie iluminada en una dirección
específica
surface Es una función de bajo nivel en la cual están basados los
comandos anteriores (excepto contour)
Ejercicio. Utilizar el comando peaks para observar el funcionamiento de los comandos de
graficación. El comando peaks es una función de dos variables resultante de desplazar y escalar
curvas de distribución gaussiana.
IV. Simulación usando archivos –M
Los archivos que contienen el código de la plataforma de simulación MATLAB se llaman
archivos –M. Estos archivos –M pueden ser funciones que acepten argumentos de entrada y
produzcan salidas, o simplemente pueden ser scripts que ejecuten una serie de comandos de
MATLAB. Para que estos archivos sean reconocidos en MATLAB, debe usarse la extensión .m.
Estos archivos pueden crearse en cualquier editor de textos.
IV.1 Scripts
Los scripts son la clase más 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 línea 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 cálculos.
Ejemplo. Teclee las siguientes líneas en el Editor/Debugger de MATLAB.
%Este archivo –M genera gráficas conocidas como “pétalos de flores”
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
Al terminar de teclear, es necesario guardar el script en un archivo –M, al cual se le dará el nombre
de petalos.m. Para ejecutar las líneas de este script basta teclear petalos en la línea de comando.
Después que el script despliegue una gráfica, presione la tecla Enter para dar paso a la nueva gráfica.
Una vez que termine la ejecución 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 líneas en el Editor/Debugger de MATLAB. Esta función 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); % Cálculo del promedio
La función PROMEDIO acepta un vector como argumento de entrada y regresa un solo valor como
argumento de salida. Para probar la función, teclear las siguientes líneas.
»z = 1:99;
»promedio(z)
ans =
50
»y = promedio(z)
V. Introducción a matemáticas simbólicas en MATLAB
Matlab cuenta con una librería dedicada al desarrollo de expresiones simbólicas llamada Symbolic
Math Toolbox la cual permite la elaboración de expresiones ambiguas, similares a las que
normalmente se utilizan en la enseñanza de matemáticas e ingeniería. Además, nos permite realizar
operaciones matemáticas con ellas (o entre ellas), las cuales van desde simple aritmética (suma,
resta, multiplicación, etc.), hasta algebra, cálculo y transformadas, similares a las que se estudian en
el ámbito de Señales y Sistemas.
V.1 Declaración de variables
La declaración de variables simbólicas se realiza usando la función sym:
>> x = sym (‘x’);
Esto nos dará como resultado, una variable simbólica “x”.
Existe un formato corto para la declaración de variables. Para esto se utiliza la variación syms:
>> syms x;
Esto nos dará el mismo resultado que la declaración anterior. La función syms incluso permite
declarar varias variables de forma simultánea:
>> syms x y z;
V.2 Expresiones simbólicas
Existen dos maneras para la elaboración de expresiones simbólicas:
1) Sin declarar variables
Se puede formar una expresión simbólica utilizando la función 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 también expresiones simbólicas:
>> syms y;
>> g = sin(y);
En ambos casos, la expresión resultante será la misma. También se pueden incluir constantes u otras
variables simbólicas en la expresión, por ejemplo:
>> g = sym(‘sin(2*pi*f*y)’);
V.3 Cálculo diferencial e integral
El Symbolic Math Toolbox nos permite calcular derivadas e integrales de expresiones simbólicas y
obtener el resultado de la misma manera:
1) Derivación
El comando diff puede calcular la derivada de una expresión simbólica. Ejemplo:
>> syms x;
>> y = x^3
y = x^3
>> dy = diff(y)
dy = 3*x^2
En el caso de que la expresión contenga más de una variable simbólica, se debe de indicar con
respecto de cual variable se realizará la derivación. Ejemplo:
>> syms A x;
>> y = A*x^3
y = A*x^3
Derivación con respecto de x
>> dy = diff(y,x)
dy = 3*A*x^2
Derivación con respecto de A
>> dy = diff(y,A)
dy = x^3
2) Integración
El comando int calcula la integral de una expresión simbólica. Ejemplo:
>> sym x;
>> y = sin(x)
y = sin(x)
>> dy = int(y);
dy = -cos(x)
Igual que en el caso de la derivación, cuando la expresión contiene varias variables, se debe
de indicar con respecto de cuál de ellas se integrará:
>> sym A x;
>> y = A*sin(x)
y = sin(x)
Integración con respecto de x
>> dy = int(y,x);
dy = -A*cos(x)
Integración con respecto de A
>> dy = int(y,A);
dy = (A^2*sin(x))/2
V.4 Graficación
Para graficar expresiones simbólicas, normalmente se utilizara la función ezplot. En la
figura IV.1 se muestra el resultado de graficar una senoidal simbólica.
>> sym t;
>> y = sin(t)
y = sin(t)
>> ezplot(y);
-6 -4 -2 0 2 4 6
-1
-0.5
0
0.5
1
t
sin(t)
Figura V.1 Senoidal simbólica graficada.
Por defecto, ezplot le otorga valores a la variable independiente en un rango de -2π hasta
2π. Si se desea graficar en un intervalo diferente, este se debe de especificar. Al teclear:
>> ezplot(y,[0,6*pi]);
Se obtiene la gráfica mostrada en la figura IV.2
0 2 4 6 8 10 12 14 16 18
-1
-0.5
0
0.5
1
t
sin(t)
Figura V.2 Senoidal simbólica en el intervalo de 0 a 6π.
Esto graficará la expresión en el intervalo de 0 (valor mínimo) hasta 6π (valor máximo).
Ejercicio
Graficar una suma de senoides y(t) = 3 sin(2t) + 5 sin(3.5t)
V.5 Funciones especiales
El Symbolic Math Toolbox incluye funciones para representar señales especiales, como son
la el escalón y el impulso.
1) Función escalón
En Matlab, la función heaviside nos permite obtener una representación simbólica del
escalón unitario tecleando lo siguiente (ver la figura VI.3):
>> syms t;
>> u=heaviside(t);
>> ezplot(u,[-2 10]);
-2 0 2 4 6 8 10
0
0.2
0.4
0.6
0.8
1
t
heaviside(t)
Figura V.3 Escalón unitario obtenido
En el programa anterior, se guarda la función u(t) en u y se grafica utilizando ezplot en un
rango de -2 a 10.
2) Función impulso
Otra función utilizada en el estudio de señales y sistemas es el impulso unitario. En Matlab
este se representa con la función dirac, tal como se muestra a continuación y en la figura
IV.4:
>> syms t;
>> d=dirac(t);
>> ezplot(d)
-6 -4 -2 0 2 4 6-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
t
dirac(t)
Figura V.4 Gráfica del impulso obtenido simbólicamente
En este caso, si graficamos la función dirac (ver figura VI.4), no se podrá apreciar el
impulso debido a que su duración es prácticamente nula. Sin embargo, su utilización es
necesaria al momento de conocer la respuesta de sistemas mediante la convolución.
V.6 Transformada de laplace
Este Toolbox también permite la solución simbólica de transformadas comunes, como lo es
la transformada de Laplace
1) Transformada de Laplace
El comando laplace nos permite obtener la transformada de Laplace de una expresión
simbólica. Ejemplo:
Se desea conocer la transformada de Laplace de la siguiente función:
>> syms a t;
>> y=exp(-a*t)*heaviside(t);
>> Y=laplace(y)
Y = 1/(a + s)
Con el código anterior, se obtiene que la transformada de Laplace de la función en tiempo
mostrada es:
2) Transformada inversa de Laplace
De igual manera, el comando ilaplace nos permite calcular la transformada inversa
simbólica de una expresión. Ejemplo:
>> syms a s;
>> Y = 1/(s+a);
>> y = ilaplace(Y)
y = 1/exp(a*t)
Se obtiene que la transformada inversa de la expresión inicial es:
V.7 Convolución continua
Aunque la Symbolic Math Toolbox no incluye en sí misma una función para realizar la
convolución entre señales, esta se puede realizar las propiedades de la convolución en el
dominio s.
Por definición, la convolución continua se expresa de la siguiente manera:
Utilizando las propiedades de la transformada de Laplace, estas nos dicen que la
convolución en tiempo se convierte en una multiplicación en el dominio s:
Entonces, si se transforman las señales del dominio del tiempo al dominio s utilizando
Laplace, se realiza la multiplicación para obtener Y(s), y se antitransforma, se obtendrá la
señal y(t) que es el resultado de la convolución. Ejemplo:
Se desea obtener la convolución entre las siguientes señales:
x(t) = u(t) - u(t-2)
h(t) = u(t-1) – u(t-3)
Estas son declaradas en Matlab de la siguiente manera:
>> syms t;
>> x = heaviside(t) - heaviside(t-2);
>> h = heaviside(t-1) - heaviside(t-3);
A continuación, estas se transforman al dominio s con la función Laplace:
>> X = laplace(x);
>> H = laplace(h);
Después se realiza la multiplicación para obtener Y(s):
>> Y = X*H;
Finalmente se antitransforma con ilaplace y se observa el resultado
>> y = ilaplace(Y)
y = heaviside(t - 1)*(t - 1) - 2*heaviside(t -
3)*(t - 3) + heaviside(t - 5)*(t - 5)
Por lo tanto, el resultado de la convolución de las señales x(t) y h(t) para este ejemplo, en
notación común, es:
Si se desea observar la señal obtenida, se grafica con el comando ezplot y que se muestra en
la figura VI.5:
>> ezplot(y)
1 1.5 2 2.5 3 3.5 4 4.5 5
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
heaviside(t - 1) (t - 1) -...+ heaviside(t - 5) (t - 5)
Figura V.5 Resultado de la convolución
En la figura VI.5, se observa el resultado grafico de la convolución entre las señales
involucradas. Si se desea observar la señal en un intervalo más amplio, solamente es
necesario indicar los límites para el eje x, como se indica en la sección de graficación de
este documento.
Ejercicio. Obtener la convolución de f(t) con h(t) si f(t) = t y h(t) = 5 sen(t).
Ejercicio. Obtener la convolución gráfica de f(t) con h(t), las cuales se muestran en la
figura VI.6.
1 2 3
h(t)
Figura V.6 Funciones f(t) y h(t)
VI. Herramienta Disttool
Disttool (Probability Distribution Function Tool) es una herramienta para analizar
Funciones de Distribución de Probabilidad perteneciente a la plataforma de simulación
Matlab. Dicha herramienta consiste en una interfaz gráfica, tal como se muestra en la figura
3, la cual permite ver la gráfica de las FDPs, tanto de forma acumulativa (CDF
seleccionado en la casilla Function type) como en un punto particular (PDF seleccionado
en la casilla Function type). Esta interfaz permite que el usuario cambie los parámetros para
cada FDP con valores que algunas veces no está contemplados en las Tablas de FDP
tradicionales. En la Figura VII.1 se muestra el caso de la FDP Normal (que es el caso en el
que inicia la interfaz), con parámetros , correspondiente a la casilla Mu y ,
correspondiente a la casilla Sigma y se observa que dichos parámetros pueden modificarse
ya sea a través de la caja de texto o a través de la barra deslizante, para variarlos poco a
poco y ver su comportamiento en la gráfica. En este caso, la probabilidad que existe de
a se muestra en la caja Probability.
Figura VI.1 Interfaz gráfica de Disttool
VI.1 Distribución Binomial
En la Figura VII.2 se muestra la configuración de la interfaz gráfica para el caso de una
distribución binomial con parámetros n = 10 y p = 0.5, es decir B(5,10,0.5). En la casilla
Trials se introduce el valor del número de experimentos a ejecutar, en este caso 10 y la
probabilidad de éxito p = 0.5 se introduce en la casilla Prob. La probabilidad
correspondiente a se calcula y despliega en la casilla
Probability, que en este caso corresponde a 0.62305. Cuando en la interfaz se tiene
seleccionada la opción CDF en Function type, se obtienen los valores de las Tablas de
Distribución de Probabilidad tradicionales.
Figura VI.2. Interfaz gráfica para una distribución Binomial acumulada con n = 10 y p =
0.5.
En la Figura VII.3 se muestra en la interfaz gráfica el valor de la probabilidad para tener
exactamente 5 éxitos una distribución Binomial de 10 experimentos y se observa que
. Cambiando el valor de la casilla X, se puede obtener el valor
de correspondiente. Esta interfaz muestra el resultado de programar la ecuación para
la distribución Binomial:
Figura VI.3. Interfaz gráfica para una distribución Binomial con n = 10 y p = 0.5.
Si se desea obtener la probabilidad en un intervalo, por ejemplo en una
Distribución Binomial con los mismos parámetros del caso anterior, se puede resolver de la
siguiente forma . Esto se puede resolver con la interfaz gráfica de la
forma que se muestra en la Figura VII.4. De ahí se observa que:
y
Al analizar la Figura VII.4, se puede observar que el resultado se obtiene de restar del área
menor al área mayor . En la práctica se ha observado que los alumnos
dudan a qué probabilidad se le resta qué probabilidad para obtener la probabilidad de un
intervalo. De esta forma, los alumnos pueden “ver” las áreas referidas a cada probabilidad y
poder determinar que siempre al área mayor se le va a restar el área menor para poder
calcular la probabilidad en un intervalo. Esto es útil en lo que el alumno se familiariza con
el uso de las Tablas de FDPs.
Figura VI.4. Cálculo de la
VI.2 Función Densidad de Probabilidad exponencial
Como ejemplo para las FDPs continuas, se utiliza el siguiente ejercicio de distribución
exponencial, el cual implica que se lleve a cabo una integración:
Suponga que el tiempo de respuesta X en cierta terminal de computadora en línea (el
tiempo transcurrido entre el fin de la consulta del usuario y el principio de la respuesta del
sistema a esa consulta) tiene una distribución exponencial con tiempo esperado de respuesta
igual a 5 segundos. ¿Cuál es la probabilidad de que el tiempo de respuesta sea cuando
mucho de 10 segundos?
En este caso, , para y se desea hallar y aplicando la definición
de la FDP exponencial se puede obtener de:
.
En la Figura VII.5 se muestra cómo se puede resolver este problema mediante la interfaz
gráfica. Se introduce el parámetro 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.
Figura VI.5. Obtención del valor de en Distribución Exponencial con media 5.
Por otra parte, si el problema pidiera la probabilidad de que el tiempo de respuesta sea de al
menos 10 segundos, es decir . Esto
porque la interfaz solo da probabilidades menores o iguales a x, es decir no calcula
probabilidades mayores o iguales a x de forma directa. Si se aplica la definición, se hubiera
tenido que resolver:
VI.3 Función Densidad de Probabilidad Normal o Gaussiana
En el caso de la FDP Normal o Gaussiana, la interfaz automáticamente hace el proceso de
la normalización de la variable, ya que se le introducen los parámetros de media y
desviación estándar de la variable a normalizar. En el siguiente ejercicio se ilustra el
proceso:
Suponga una variable aleatoria con distribución normal con media igual a 10 y variancia
igual a 2.1. Calcular:
a) la probabilidad de que la variable aleatoria x sea mayor que 11.
b) la probabilidad de la variable aleatoria x esté entre 7.6 y 12.2
Dado que la interfaz requiere el parámetro de desviación estándar, es necesario calcularlo a
partir de la variancia, es decir , el cual se introduce en la casilla Sigma,
mientras que en la casilla Mu se introduce el valor de 10. Para a), se pone en la casilla X el
valor de 11 y se sabe que , dado que los valores tabulados solo
se calculan para probabilidades menores a x. Este proceso se muestra en la Figura VII.6 y
se observa que , por lo que
Figura VI.6. Obtención de con N(10,2.1).
Para b) se tiene que: , lo cual se resuelve tal
como se muestra en la Figura VII.7. De la Figura VII.7, se observa que
y que , por lo que
. Otra vez al área mayor se le restó el
área menor.
Figura VI.7. Obtención de con N(10,2.1).
VII. Bibliografía y Referencias
[1] J. García López, “Manual de simulaciones usando la plataforma de simulación
MATLAB” (manual que forma parte del “Módulo para desarrollo de prácticas de
Procesamiento Digital de Señales”, proyecto de investigación del CITEDI-IPN), CITEDI-
IPN, Departamento de Posgrado, 1999-2000.
[2] J. García López, “Procesamiento Digital de Señales”, (libro en proceso de publicación
por el Fondo de Cultura Económica, Colección Ciencias de la Computación), CITEDI-IPN,
Departamento de Posgrado, 1999.
[3] The MathWorks Inc., “Getting Started with MATLAB Version 5.x”
[4] The MathWorks Inc., “Using MATLAB Version 5.x”
[5] The MathWorks Inc., “Using MATLAB Graphics Version 5.x”
[6] The MathWorks Inc., Manuales de las siguientes herramientas (toolboxes): Control,
Fuzzy Logic, Signal Processing, Data Acquisition, Building GUIs in Matlab.
[7] Escuela Superior de Ingenieros Industriales Universidad de Navarra, Aprenda Matlab.
[8] Nakamura, Shoichiro, “Análisis numérico y visualización gráfica con Matlab”, Pearson
Educación