curso matlab

44
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

Upload: ggabie-zamarripa

Post on 09-Dec-2015

33 views

Category:

Documents


2 download

DESCRIPTION

MANUAL PARA MATLAB , DE GRAN UTILIDAD EN MATERIAS COMO SEÑALES Y SISTEMAS .

TRANSCRIPT

Page 1: Curso Matlab

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

Page 2: Curso Matlab

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

Page 3: Curso Matlab

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

Page 4: Curso Matlab

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.

Page 5: Curso Matlab

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.

Page 6: Curso Matlab

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.

Page 7: Curso Matlab

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.

Page 8: Curso Matlab

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.

Page 9: Curso Matlab

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

Page 10: Curso Matlab

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

Page 11: Curso Matlab

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

Page 12: Curso Matlab

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.

Page 13: Curso Matlab

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.

Page 14: Curso Matlab

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

Page 15: Curso Matlab

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.

Page 16: Curso Matlab

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

Page 17: Curso Matlab

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.

Page 18: Curso Matlab

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.

Page 19: Curso Matlab

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;

Page 20: Curso Matlab

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

Page 21: Curso Matlab

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.

Page 22: Curso Matlab

)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

Page 23: Curso Matlab

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.

Page 24: Curso Matlab

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)

Page 25: Curso Matlab

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

Page 26: Curso Matlab

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.

Page 27: Curso Matlab

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.

Page 28: Curso Matlab

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.

Page 29: Curso Matlab

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)

Page 30: Curso Matlab

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

Page 31: Curso Matlab

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)

Page 32: Curso Matlab

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

Page 33: Curso Matlab

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)

Page 34: Curso Matlab

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

Page 35: Curso Matlab

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

Page 36: Curso Matlab

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

Page 37: Curso Matlab

1 2 3

h(t)

Figura V.6 Funciones f(t) y h(t)

Page 38: Curso Matlab

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

Page 39: Curso Matlab

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:

Page 40: Curso Matlab

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.

Page 41: Curso Matlab

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.

Page 42: Curso Matlab

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

Page 43: Curso Matlab

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

Page 44: Curso Matlab

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