Está en la página 1de 33

PRESENTACIÓN

Este sitio web esta dedicado a la presentación de un tutorial básico acerca de el programa
MATLAB y su uso en los temas concernientes al Análisis de Señales. Por cuestiones de
navegación el sitio web ha sido diseñado usando Marcos (Frames), Espera el autor, los
lectores conocedores de diseño web no se molesten por hacer uso de este método. El
tutorial cuenta con un menú de navegación en la parte Izquierda que permitirá acceder
fácilmete a cualquier tema del tutorial.

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 1


Que es MATLAB?

Matlab® es un lenguaje de alto funcionamiento para computación técnica, Este integra


computación, visualización, y programación, en un entorno fácil de usar donde los
problemas y las soluciones son expresados en la más familiar notación matemática. Los
usos más familiares de Matlab son:

• Matemática y Computación
• Desarrollo de algoritmos
• Modelamiento , simulación y prototipado
• Análisis de datos, exploración y visualización
• Graficas científicas e ingenieriles
• Desarrollo de aplicaciones, incluyendo construcción de interfaces graficas de usuario

MATLAB es un sistema interactivo cuyo elemento básico de almacenamiento de


información es la matriz, que tiene una característica fundamental y es que no necesita
dimensionamiento. Esto le permite resolver varios problemas de computación técnica
(especialmente aquellos que tienen formulaciones matriciales y vectoriales) en una fracción
de tiempo similar al que se gastaría cuando se escribe un programa en un lenguaje no
interactivo como C o FORTRAN

El nombre MATLAB simboliza Matriz Laboratorio o Laboratorio de Matrices. Matlab fue


originalmente escrito para proveer fácil acceso el softrware de matrices desarrollado por los
proyectos LINPACK y EISPACK, hoy, los mores de matlab incorporan las librerías
LINPACK y BLAS,

Matlab se ha desarrollado sobre un periodo de años con entradas provenientes de muchos


usuarios, en los entornos universitarios, matlab es la herramienta instructiva estándar para
cursos avanzados e introductorios en matemáticas, ingeniería y ciencia. En la industria
Matlab es la herramienta escogida para investigación de alta productividad, desarrollo y
análisis.

Matlab presenta una familia de soluciones a aplicaciones específicas de acoplamiento


rápido llamadas ToolBoxes. Los toolboxes son colecciones muy comprensibles de
funciones MATLAB, o archivos de matlab (M-files) que extienden el entorno de MATLAB
para resolver clases particulares de problemas, Algunas áreas en las cuales existen
toolboxes disponibles son:

• Procesamiento de señales
• Sistemas de control
• Redes neuronales
• Lógica difusa
• Wavelets
• Simulación

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 2


El Sistema MATLAB

El sistema Matlab consiste de cinco partes principales:

Entorno de desarrollo:

Es el conjunto herramientas y módulos que ayudan a usar las funciones y archivos de


matlab. Muchas de esas herramientas son interfaces graficas de usuario. Esto incluye, el
escritorio de matlab, la ventana de comandos, el historial de comandos, un editor y un
depurador, navegadores para revisión de la ayuda, el espacio de trabajo o workspace y los
archivos.

La librería de funciones matemáticas: esta es una gran colección de algoritmos


computacionales que van desde funciones eleménteles como la suma, la función seno y
coseno, y la aritmética de números complejos hasta funciones mucho mas sofisticadas
como inversas de matrices, autovalores de matrices, funciones de bessel, y transformadas
radiadas de Fourier.

El lenguaje MATLAB:

Es un lenguaje de alto nivel para matrices con sentencias para control de flujo, creación de
funciones y estructuras de datos, funciones de entrada/salida y algunas características de
programación orientada por objetos, Este lenguaje permite tanto la programación a pequeña
escala para la creación rápida de programas, como programación a larga escala para la
realización de aplicaciones complejas.

Gráficas:

Matlab cuenta con módulos extensivos para la visualización de vectores y matrices en


forma de graficas, así como para realizar comentarios e impresión de estas gráficas. Matlab
incluye funciones de alto nivel para la visualización de datos en dos y tres dimensiones,
procesamiento de imágenes, animación, y creación de gráficos de presentación. Matlab
también incluye funciones de bajo nivel que permiten personalizar completamente la
apariencia de los gráficos así como construir interfaces graficas de usuario para las
aplicaciones.

Interfaces Externas:

Las interfaces externas son un conjunto de librerías que permiten la programación en


lenguaje C y FORTRAN de programas que interactúen con matlab. Estas librerías proveen
facilidades para realizar llamadas de rutinas desde Matlab.

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 3


Ayuda para MATLAB

Matlab provee documentación extensiva, tanto en formato impreso como en línea para
ayudar a los usuarios a aprender todas sus características. La ayuda online de Matlab
provee información orientada a tareas e información de referencia acerca de todas las
características de Matlab.

Para ver la documentación online de Matlab seleccione la opción “Ayuda de MatLab” del
menú Ayuda en la barra de menús de Matlab.

EXPRESIONES

Como la mayoría de lenguajes de programación, Matlab soporta la creación de expresiones


matemáticas, pero en contraste con los lenguajes de programación, las expresiones en
matlab tienen la capacidad de involucrar matrices y operaciones entre ellas. Las
expresiones se construyen con la combinación de varios bloques básicos los cuales son:

 Números
 Variables
 Operadores
 Funciones

NUMEROS

Matlab usa para la representación de los números, notación decimal convencional, con un
punto de separación decimal opcional y la precedencia de un signo más (+) o menos (-). La
notación científica en Matlab hace uso de la letra e para especificar un factor de escala de
una potencia de 10.

Existen tres tipos de números en Matlab:

 Números Enteros
 Números Reales
 Números complejos

Los números enteros son ingresados a Matlab sin el punto de separación decimal. A
continuación se muestra un ejemplo:

>> num_entero = 10

>> num_entero =

10

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 4


Cuando el valor que se ingresa, esta acompañado por el punto decimal, este es almacenado
cono un numero real. Por ejemplo:

>> num_real = 10.01

>> num_real =
10.0100

Los números complejos en Matlab son representados en la forma rectangular. De manera


que todo numero tienen una parte real y una parte imaginaria. La unidad imaginaria en
Matlab se denota con los caracteres “i” o “j”. Por ejemplo.

>>i

Ans=0+1.0000i

Todos los números son almacenados internamente usando el formato long especificado por
el estándar de punto flotante de la IEEE. Los números en punto flotante tienen una
precisión finita de 16 dígitos decimales significativos y un rango entre 10-308 y 10+308

La manera en que son almacenados estos números por la maquina en que se esta usando el
sistema matlab esta fuera del alcance de este tutorial, sin embargo puede hacerse referencia
a la documentación técnica disponible en el sitio Web de Matlab www.matlab.com.

VARIABLES

Matlab no requiere ninguna declaración de tipo o de dimensión para crear las variables.
Cuando matlab encuentra un nombre nuevo de variable, automáticamente crea la variable y
separa la cantidad apropiada de memoria para realizar el almacenamiento de la variable. Si
la variable ya existe, Matlab cambia su contenido y si es necesario separa nuevo espacio de
memoria para su almacenamiento. Por ejemplo la siguiente expresión

num_estudiantes = 25

Crea una matriz de 1 fila x 1 columna, llamada “num_estudiantes” y almacena el valor de


25 en la única posición existente.

Los nombres de las variables consisten de una letra seguida por cualquier número de letras
dígitos ó guiones Bajos ( _ ). Matlab usa únicamente los primeros 31 caracteres del nombre
de una variable. Los nombres de las variables en Matlab son sensibles a las mayúsculas y
minúsculas, de esta manera una variable llamada num tiene un espacio de almacenamiento
diferente a una variable llamada Num.

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 5


Existen dos constantes en Matlab las cuales denotan los números reales más pequeño y más
grande que se puede usar, dichas constantes son realmin y relamas respectivamente.

Para observar los valores de estas tan solo es necesario escribir sus nombres el la ventana
de comandos de la siguiente manera.

>> realmin
ans = 2.2251e-308

Matlab posee tres constantes mas para la representación de cantidades que no son
consideradas números como tal. Estas cantidades son:

 Infinito negativo
 Infinito Positivo
 Cantidades indefinidas.

Y las respectivas constantes son:

 -Inf
 Inf
 NaN

Las dos primeras variables de la lista son las representaciones IEEE para el infinito
positivo y negativo. La cantidad infinito se genera por un desborde en las operaciones o por
una división por cero. La variable NaN, es una abreviación de la frase en ingles “Not a
Number”, que significa “No numero”. Esta cantidad es obtenida como resultado de

operaciones aritméticas indefinidas tales como ó ∞ - ∞.

OPERACIONES ARITMETICAS

La lista de operaciones básicas aritméticas en matlab incluye se describe en la siguiente


lista.

Operación Símbolo
Adición +
Substracción -
Multiplicación *
División /ó\
Exponenciación ^
Complejo Conjugado ‘
Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 6
Matlab posee dos operadores de división:

 División Derecha /
 División Izquierda \

El resultado que producen dichos operadores no son los mismos, por ejemplo:

>> div_derecha = 47/3


div_derecha =
15.6667

>>div_izq = 47\3
div_izq=
0.0638

FUNCIONES

Matlab provee un gran numero de funciones matemáticas elementales, como Valor


Absoluto, Raíz Cuadrada, Seno, Coseno, Etc. El control de resultados en matlab se realiza
con seguridad, por ejemplo, al calcular la raíz cuadrada o el logaritmo de un número
negativo, no resulta la operación en un error como ocurre en las calculadoras
convencionales o sistemas clásicos de cálculos. El resultado de este tipo de operaciones es
controlado automáticamente por matlab y como resultado se obtiene el número complejo
que se obtiene al realizar la operación teóricamente. Matlab también provee muchas de las
más avanzadas funciones matemáticas, como las funciones de Bessel y funciones Gamma.
Para obtener una lista de las funciones elementales en matlab se debe escribir el siguiente
comando:

>> help elfun

Para obtener la lista de las funciones más avanzadas y de las funciones disponibles para
matrices se usan los siguientes comandos:

>>help specfun

>> help elmat

Algunas de las funciones, como Raíz Cuadrada, y Seno, son llamadas funciones Built In.
Estas funciones son parte del núcleo principal de Matlab de manera que están programadas
para funcionar de manera muy eficiente. Por lo tanto el acceso a la implementación
computacional de estas funciones no esta disponible y su funcionamiento no puede ser
modificado. Otras funciones como Gamma o Seno Hiperbólico Inverso, están
implementadas con el lenguaje de programación de Matlab en archivos llamados M-Files, a
los cuales se puede acceder completamente, por lo tanto es posible ver el código fuente que

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 7


implementa dichas funciones y también es posible realizar modificaciones sobre el código
fuente para de esta manera cambiar la implementación computacional de la función.

EJEMPLOS DE EXPRESIONES

Los siguientes comandos son ejemplos de expresiones y sus valores de resultado.

Expresión Descripción
rho = (1+sqrt(5))/2 Se crea la variable de nombre rho, a la
cual se asigna el valor del resultado de la
rho =

1.6180 siguiente expresión matemática


a = abs(3+4i) Se crea una variable de nombre a, a la
cual se asigna el valor absoluto del
a= numero complejo 3 + 4 i. Como se puede
la función valor absoluto aplicada a un
5 numero complejo da como resultado la
Norma de dicho numero
z = sqrt(besselk(4/3,rho-i))
Calculo de otra variable haciendo uso de
z=
las funciones avanzadas de Bessel
0.3730+ 0.3214i
gran_num = exp(log(realmax))
Se calcula la siguiente expresión, lo cual
gran_num = genera un número muy grande como
resultado.
1.7977e+308
muy_grande = pi*gran_num El número anterior, multiplicado por el
número π da como resultado un número
muy_grande = que es mayor que la constante relmax lo
cual genera un desborde y la cantidad
Inf resultante es Infinito.

El objeto básico usado en MATLAB es una matriz numérica con la posibilidad de


almacenar números complejos. Los datos encontrados en el estudio de señales y sistemas
son siempre, muy bien representados en forma de matrices. En esta sección se usará
MATLAB para la generación de señales elementales como lo son las señales
exponenciales, senoidales, etc.

El ToolBox de procesamiento de señales de MATLAB posee una larga variedad de


funciones para la generación de señales, estas señales requieren de una representación
vectorial de la variable tiempo, de manera continua o discreta. Para realizar una simulación

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 8


de un intervalo continuo, se usa un vector de valores discretos con un intervalo de muestreo
muy pequeño.

El siguiente comando genera un vector llamado t de valores que representan la variable


tiempo, con un intervalo de muestreo de 1ms entre 0 y 1seg.

t = 0:0.001:1;

Para generar un vector llamado n de valores que representan la variable tiempo para una
señal discreta en el intervalo de 0 a 1000, se puede usar el siguiente comando.

n = 0:1000;

Después de creado el vector que representa la variable tiempo, es posible iniciar el


desarrollo de alguna señal de interés.

En MATLAB una señal discreta en el tiempo se representa exactamente, porque los valores
de la señal son representados como los elementos de un vector. Sin embargo las señales de
tiempo continuo en MATLAB son tan solo aproximaciones. La aproximación consiste de
un vector cuyos elementos son muestras de la verdadera señal de tiempo continuo. Cuando
se usa esta técnica para la representación de señales continuas es importante escoger el
intervalo de muestreo lo suficientemente pequeño para asegurar que las muestras capturan
todos los detalles de la señal.

SEÑALES PERIODICAS

La generación de señales periódicas tales como ondas cuadradas y triangulares es una


actividad muy fácil de realizar en MATLAB. Consideremos primero la generación de una
onda cuadrada de amplitud A, frecuencia fundamental w (medida en radianes por segundo)
y ciclo útil rho. Recordemos que el ciclo útil es la fracción de cada periodo en donde la
señal es positiva.

Para generar dicha señal se puede usar el siguiente conjunto de comandos:

>> A = 1;

>> w = 10 * pi;

>> rho = 0.5;

>> t = 0:0.001:1;

>> sq = A*square(w*t+rho);

>> plot(t,sq);

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 9


El resultado se puede observar en la siguiente gráfica:

En la segunda línea, pi es una función interna de matlab que calcula el número más cercano
a la constante PI en formato de coma flotante. El último comando es usado para ver la señal
generada. El comando plot dibuja líneas conectando los valores sucesivos de la señal y así
da la apariencia de una señal en tiempo continuo.

Consideremos ahora la generación de una onda triangular de amplitud A, frecuencia


fundamental w y ancho Wdt . El periodo de la onda triangular será T con el máximo valor
de la señal ocurriendo en t = WT . El comando básico para generar esta señal es:

A * sawtooth(w * t + Wdt)

El listado complete de comandos sería:

>> A = 1;

>> w = 10 * pi;

>> Wdt = 0.5;

>> t = 0:0.001:1;

>> tri = A*sawtooth(w * t + Wdt);

>> plot(t,tri);

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 10


El resultado se puede visualizar en la siguiente gráfica.

Como se menciono anteriormente, una señal generada en MATLAB es inherentemente de


naturaleza discreta. Para visualizar una señal en tiempo discreto se puede hacer uso del
comando stem. Específicamente stem( n , x ), bosqueja los datos contenidos en el vector x
como una señal de tiempo discreto con los valores de tiempo definidos por el vector n. Los
vectores n y x deben tener dimensiones compatibles, es decir deben tener el mismo número
de elementos. El siguiente ejemplo genera una señal cuadrada en tiempo discreto de

amplitud igual a la unidad, ciclo útil igual a 50% y una frecuencia angular igual a :

>> A = 1;

>> omega = pi / 4;

>> rho = 0.5;

>>n = -10:10;

>>x = A*square(omega*n +rho);

>>stem(n,x);

El resultado se puede ver en la siguiente gráfica:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 11


SEÑALES EXPONENCIALES

Las señales exponenciales se pueden clasificar según su comportamiento en decrecientes y


crecientes. El comando en MATLAB para generar una señal exponencial decreciente es:

B * exp(-a*t);

Para generar una señal exponencial creciente se usa el comando:

B * exp( a * t);

En ambos casos el parámetro a es positivo. El siguiente ejemplo muestra la generación de


una señal exponencial decreciente:

>> B = 5;

>> a = 6;

>> t = 0:0.001:1;

>> x = B * exp( -a * t ); % señal exponencial decreciente.

>> plot( t, x );

Siendo el resultado como sigue:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 12


Para la generación de una señal exponencial creciente se puede usar el siguiente ejemplo:

>> B = 1;

>> a = 5;

>> t = 0:0.001:1;

>> x = B * exp( a * t );

>> plot( t, x ) ;

Existen casos particulares en los que la base de la operación de exponenciación no es el


número irracional e, puede ser cualquier otro número. Para estos casos se usa una notación
diferente la cual esta basada en la utilización del símbolo ^. Observando el ejemplo que
sigue se nota que r es un número mientras que n es un vector, por lo tanto se usa una
combinación del símbolo exponenciación con el carácter “.” Lo cual significa que a cada
valor del vector le será aplicada la función.

El siguiente ejemplo genera la señal:

>> B = 1;

>> r = 0.85;

>> n = -10:10;

>> x = B * r .^ n;

>> stem( n , x );

SEÑALES SENOISOIDALES.

MATLAB también contiene funciones trigonométricas que pueden ser usadas para generar
señales senosoidales. Una señal coseno de amplitud A, frecuencia w0 (medida en radianes
por segundo) y ángulo de fase phi (en radianes) se obtiene usando el comando:

A * cos ( w0 * t + phi);

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 13


Alternativamente se puede usar la función seno para generar una señal senosoidal usando el
siguiente comando:

A * sin ( w0 * t + phi );

En seguida se muestran ejemplos para cada uno de las señales respectivamente:

>> A = 4;

>> w0= 20 * pi;

>> phi = pi / 6;

>> t = 0:0.001:1;

>> coseno = A * cos( w0 * t + phi);

>> plot(t,coseno) ;

>> A = 0.5;

>> w0 = 20 * pi;

>> phi = pi / 2;

>> t = 0:0.001:1;

>> seno = A * sin( w0 * t + phi);

>> plot(t,seno);

SEÑALES SENOIDALES CON AMORTIGUACIÓN EXPONENCIAL.

En todos los comandos de generación de señales descritos anteriormente, se ha generado la


amplitud deseada de las señales, realizando una multiplicación por un escalar A. Esta
operación se describe usando el símbolo asterisco “*”. Supongamos que se desea
multiplicar una señal senosoidal por una señal exponencial para producir como resultado
una señal con amortiguación exponencial. La siguiente ecuación describe mejor el supuesto
caso:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 14


Debido a que tanto la componente senosoidal de la señal como la exponencial son vectores,
el procedimiento para la generación de la señal final requiere de una multiplicación de dos
vectores elemento por elemento. En MATLAB este tipo de multiplicación se representa
usando el símbolo punto (.) seguido por el símbolo asterisco (*). Así el comando para
generar la ecuación anterior sería;

A * sin( w0 * t + phi) .* exp ( -a * t);

Y un ejemplo completo sería:

>> A = 60;

>> w0 = 20 * pi;

>> phi = 0;

>> a = 6;

>> expsen = A * sin( w0 * t + phi) .* exp ( -a * t);

>>plot(t,expsen);

Dando como resultado la siguiente gráfica:

La versión discreta de la misma señal se puede obtener haciendo uso de los comandos
mostrados anteriormente de la siguiente manera:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 15


>> A = 10;

>> a = -0.1;

>> w0 = 2 * pi / 12;

>> phi = 0;

>> n = -10 : 10;

>> x = A * sin( w0 * n + phi);

>> y = exp( a * n);

>> z = x .* y;

>> tem(n,z)

SEÑALES IMPULSO, PASO Y RAMPA.

En MATLAB, el comando ones(M, N) genera una matriz de unos de tamaño M x N, y el


comando zeros(M, N) es una matriz de ceros del mismo tamaño. Se puede hacer uso de
estas dos matrices para generar dos señales comúnmente usadas.

 Señal Paso:

Una señal paso de amplitud uno, puede ser generada con el siguiente comando.

U = [zeros(1, 10), ones(1, 11)];

Para la versión continua creamos un vector que represente el tiempo el cual tenga muestras
de un intervalo separados por valores muy pequeños mientras que para la representación de
esta señal en tiempo discreto creamos un vector que represente el tiempo el cual debe tener
valores separados por una unidad.

Los comandos y los resultados para ambos tipos de señal se muestran a continuación:

>> u=[zeros(1,10),ones(1,11);

>> t=-1:0.1:1;

>> plot(t,u)

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 16


>> u=[zeros(1,10), ones(1,11)];

>> n=-10:10;

>> stem(n,u)

De los comandos anteriores es de notar que para poder usar las funciones plot() y stem(), es
requisito que los vectores (t y u) ó (n y u) tengan iguales dimensiones. Por esta razón el
vector u se forma como una composición de diez ceros y 11 unos, debido a que los arreglos
t y n, tienen dimensión 21 dado que incluyen un elemento central el cual es el número cero.
Para probar este hecho, se puede hacer uso de otra función de MATLAB llamada size()
que devuelve como resultado un vector con las dimensiones de la matriz que se le pasa
como parámetro así:

>> size(n) >> size(u) >> size(t)

ans = ans = ans =

1 21 1 21 1 21

 Señal Impulso:

La versión discreta de la señal impulso se puede también generar con ayuda de las
funciones zeros() y ones(), realizando una composición como sigue:

>> delta = [ zeros( 1 ,10 ), 1 , zeros( 1 ,10 ) ];

>> n = -10:10;

>> stem(n,delta);

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 17


Una versión continua podría evidentemente generarse usando la misma técnica que se usó
en el apartado anterior, sin embargo es necesario aumentar el número de muestras a fin de
maximizar la pendiente de la señal, en seguida se verán dos ejemplos con diferentes
número de muestras en el mismo intervalo de tiempo, como se puede ver la
correspondencia entre las dimensiones de los vectores se mantienen así que al aumentar el
tamaño de muestras del vector que representa el tiempo es necesario aumentar el valor de
ceros y de unos con el cual se esta creando la señal.

En el ejemplo se puede ver que a mayor numero de muestras, la pendiente de la señal se


hace mayor y la aproximación a la señal verdadera es más cercana.

>>delta=[zeros(1,10),1,zeros(1,10)];

>>t=-1:0.1:1;

>>plot(t,delta)

>> delta = [ zeros( 1 , 1000 ), 1 , zeros( 1 , 1000 ) ];

>> t=-1:0.001:1;

>> plot(t,delta)

 Señal Rampa

Para generar la señal rampa, tan solo es necesario recordar que esta función puede ser
creada, como la composición de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0
para valores de x menores de cero, así la versión discreta y continua se muestran a
continuación:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 18


>> rampa1=n1;

>> n1=0:30;

>> rampa1=n1;

>> rampa = [zeros(1,29),rampa1];

>> stem(n,rampa)

>> t1=0:0.1:10;

>> rampa1=t1;

>> rampa=[zeros(1,101),rampa1];

>> t2=-10:0.1:0;

>> t=[t2,t1];

>> plot(t,rampa)

EXPERIMENTOS

1. Desarrollar un conjunto de comandos MATLAB para aproximar las siguientes


señales periódicas en tiempo continuo, dibujando 5 ciclos de cada una:

a. Onda Cuadrada, de amplitud 5 Volts, frecuencia fundamental 20 Hz y ciclo


útil del 60%.

b. Señal diente de sierra, amplitud 5 Volts y frecuencia fundamental 20Hz

2. La solución a una ecuación diferencial esta dada por la siguiente expresión:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 19


Usando MATLAB, grafique la solución de la ecuación en el siguiente intervalo
[0,5] con una frecuencia de muestreo de 100 Hz

3. Repita el problema número dos para la siguiente expresión:

4. Una señal senosoidal con amortiguación exponencial esta definida por la siguiente
expresión:

Donde el parámetro a es variable y toma valores sobre el siguiente conjunto: 500,


750, 1000. Usando MATLAB, investigar el efecto de variar dicho parámetro en la
señal en el intervalo [-2,2].

REPRESENTACIONES DE FOURIER PARA LAS SEÑALES

Existen cuatro representaciones distintas de Fourier, cada una aplicable a diferentes tipos
de señales. Estas cuatro clases están definidas por las propiedades de periodicidad de una
señal y si el tiempo es de tipo continuo o discreto. Las señales periódicas tienen
representación en series de Fourier. La Serie de Fourier (FS) aplica a señales periódicas de
tiempo continuo mientras que la Serie Discreta de Fourier (DTFS) aplica a señales
periódicas de tiempo discreto. Las señales no periódicas tienen representación en forma de
transformada. Si la señal es continua en el tiempo y no periódica, la representación es
llamada Transformada de Fourier (FT). Si la señal es discreta en el tiempo y no periódica
entonces la representación usada es la transformada de Fourier en tiempo discreto (DTFT).
La siguiente tabla ilustra la relación entre las propiedades de tiempo de una señal y la
representación de Fourier adecuada.

Tiempo Periódicas No periódicas

Transformada de
Series de Fourier
Fourier
Continuas
( FS )
( FT )

Series discretas de Transformada discreta


Fourier de Fourier
Discretas
( DTFS ) ( DTFT)

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 20


La siguiente tabla muestra las relaciones matemáticas utilizadas para calcular las
representaciones de Fourier.

Tiempo Periódicas No periódicas


Series de Fourier Transformada de Fourier

Continuas

Series discretas de Fourier Transformada discreta de Fourier

Discretas

La Transformada Discreta de Fourier (DTFS)

La DTFS es la única representación de Fourier que es de valor discreto tanto en el tiempo


como en la frecuencia y de esta manera implícitamente conveniente para una
implementación computacional en MATLAB. Las expresiones utilizadas para esta
representación son fácilmente implementables en MATLAB como archivos. Sin embargo
los comandos built-in de MATLAB fft y ifft pueden también ser utilizados para evaluar la
DTFS. Dado un vector llamado x de longitud N representando un periodo de una señal
periódica x[n]. el comando:

>> X=fft(x)/N

Produce un vector llamado X de longitud N que contiene los coeficientes de la DTFS.


Matlab asume que el periodo evaluado en la señal es desde 0 hasta N-1, de manera que el
primer elemento de x y X corresponden a x[0] y X[0] respectivamente, mientras que los
últimos elementos corresponden a x[N-1] y X[N-1]. Nótese que la división por N es
completamente necesaria, debido a que el comando fft evalúa la siguiente expresión sin
realizar la división por N.

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 21


Similarmente, dados los coeficientes de una DTFS en un vector llamado X el comando:

>>x=ifft(X)*N

Produce un vector x que representa un periodo de la señal en el tiempo. Nótese que el


comando ifft debe estar multiplicado por N para evaluar la siguiente ecuación.

Los comandos fft e ifft son computados usando un algoritmo rápido o numéricamente
eficiente, conocido como “Fast Fourier Transform”.

Considere el siguiente ejemplo:

Determinar los coeficientes DTFS para la siguiente señal:

La señal tiene un periodo de 24, de manera que tan solo se hace necesario definir un
periodo y evaluar sobre este periodo la DTFS. Los comandos usados para realizar dicho
cálculo son:

>> n = 0:23;

>> x = ones(1,24) + sin( (n * pi / 12) + (3 * pi / 8 ) );

>> X = fft(x)/24;

El resultado teórico del ejemplo es el siguiente:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 22


El resultado obtenido mediante los comandos presentados anteriormente es:

X=

Columns 1 through 5

1.0000 0.4619 - 0.1913i 0.0000 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i

Columns 6 through 10

-0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 - 0.0000i 0.0000 + 0.0000i -0.0000 -


0.0000i

Columns 11 through 15

-0.0000 - 0.0000i -0.0000 - 0.0000i 0 -0.0000 + 0.0000i -0.0000 + 0.0000i

Columns 16 through 20

-0.0000 + 0.0000i 0.0000 - 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i -0.0000 +


0.0000i

Columns 21 through 24

-0.0000 - 0.0000i -0.0000 - 0.0000i 0.0000 - 0.0000i 0.4619 + 0.1913i

Como se puede ver, tres componentes tienen valor diferente de cero.

Un uso común de la transformada de Fourier, es encontrar las componentes frecuenciales


de una señal en el dominio del tiempo que esta contaminada con ruido. Considérese dos
señales senoidales que tienen frecuencias fundamentales de 50Hz y 120Hz, luego
considérese estas señales contaminadas con ruido aleatorio. Los comandos para generar una
señal con las especificaciones anteriormente mostradas son los siguientes:

>> t = 0:0.001:0.6;

>> x = sin ( 2 * pi * 50 * t ) + sin ( 2 * pi * 120 * t );

>> y = x + 2 * randn ( size ( t ) );

>> plot( 1000 * t (1:50), y (1:50) )

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 23


Es de gran dificultad identificar las componentes de frecuencia mirando la señal original.
Sin embargo al realizar la conversión de esta señal al dominio de la frecuencia, la
identificación de estas componentes se hace más sencilla. La conversión de la señal al
dominio de la frecuencia se hace calculando la Transformada R ápida de Fourier, tomando
para el cálculo los primeros 512 puntos de la señal. El espectro de potencia es una medida
de la potencia a varias frecuencias, y este puede ser calculado con los siguientes comandos.

>>Pyy = Y .* conj (Y) / 512;

Para realizar la gráfica se puede tener en cuenta que la información que aparece en el
arreglo Pyy es por propiedades de la transformada, simétrica con respecto a la frecuencia
media, es decir que si tenemos 512 puntos de muestra, la señal que esta almacenada en el
arreglo es simétrica con respecto a la muestra 256, por lo tanto dibujar las ultimas 256
muestras del arreglo será completamente innecesario. De manera que para visualizar el
espectro de potencia los comandos deben ser como se muestran a continuación:

>> f = 1000*(0:256)/512;

>> plot(f,Pyy(1:257))

Para ver todas las muestras y entender la característica de simetría descrita anteriormente se
pueden utilizar los siguientes comandos:

>> f = 1000*(0:511)/512;

>> plot(f,Pyy)

Del espectro de potencia se puede visualizar que las componentes con mayor frecuencia se
encuentran a los 50 y 120 Hz respectivamente. Comprobando así que las señales de las
cuales se formo la señal contaminada con ruido tienen estas frecuencias fundamentales.

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 24


Los computadores digitales son ideales para la implementación de descripciones en el
dominio del tiempo de sistemas discretos, porque naturalmente el computador almacena y
manipula secuencias de números. Por ejemplo, la suma de convolución describe la relación
entre la entrada y la salida de un sistema de tiempo discreto, y es fácilmente evaluada en un
computador como la suma de productos de números. En contraste, los sistemas de tiempo
continuo, son descritos en términos de funciones continuas, las cuales no son fácilmente
representadas o manipuladas en un computador digital. Por ejemplo, la salida de un sistema
en tiempo continuo esta descrita por la integral de convolucion. La evaluación de la integral
de convolucion con un computador requiere el uso de integración numérica o de técnicas de
manipulación simbólica, ambas fuera del alcance de este tutorial. Por lo tanto la
exploración con Matlab se centra en el estudio de sistemas en tiempo discreto.

Una segunda limitación en la exploración de señales y sistemas es la que se impone por la


memoria finita o por la capacidad de almacenamiento finita que es inherente en un
computador digital. Por lo tanto se manejaran únicamente señales de duración finita. Por
ejemplo si la respuesta al impulso de un sistema tiene duración infinita y la entrada es de
duración infinita, entonces la suma de convolución equivale a la suma de un infinito
número de productos. Aun si fuese posible almacenar señales de longitud infinita en el
computador, la suma infinita podría no ser calculada en una cantidad finita de tiempo.
Debido a esta limitación, el comportamiento de un sistema en respuesta una señal de
longitud infinita podría a menudo ser inferida de su respuesta a una señal de longitud finita
que presente ciertas particularidades.

CONVOLUCIÓN

Es de recordar que la suma convolución expresa la salida de un sistema de tiempo discreto


en términos de la entrada y la respuesta al impulso del sistema. Matlab tiene una función
llamada conv que evalúa la convolución de señales de tiempo discreto de duración finita. Si
x y h son vectores representado señales, entonces el siguiente comando de Matlab genera
un vector llamado y representando la convolución de la señales representadas por x y h.

y = conv(x, h)

El número de elementos en el vector y es dado por la suma de el numero de elementos en x


y h menos uno. Nótese que se debe conocer el tiempo de origen de las señales
representadas por x y h con el fin de determinar el tiempo de origen de la convolución. En
general, si el primer elemento de x corresponde al tiempo n=kx y el primer elemento de h
corresponde a n=kh, entonces el primer elemento de y corresponde al tiempo n= kx+kh.
Para ilustrar este hecho, considere el siguiente ejemplo:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 25


 Asuma el sistema LTI el cual tiene la siguiente respuesta al impulso.

 Determine la salida de este sistema en respuesta a la siguiente entrada.

Aquí el primer elemento diferente de cero en la respuesta al impulso del sistema ocurre en
el tiempo n = -1 y el primer elemento de la entrada x ocurre en el tiempo n = 0. La anterior
convolución se puede calcular en Matlab de la siguiente manera:

>> h = [1, 2, 1];


>> x = [2, 3, -2];
>> y = conv(x,h)
y=
2 7 6 -1 -2
>> n = -1:3;
>> stem(n,y);

El primer elemento en el vector y corresponde al tiempo n = 0 + (-1 ) = -1.

En el siguiente ejemplo, se determinará la salida de un sistema con respuesta al impulso


dada por:

Y entrada

Se puede en este caso usar el comando conv para calcular la respuesta del sistema. En este
caso, la respuesta al impulso consiste de diez unos consecutivos comenzando en el tiempo

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 26


n = 0, y la entrada consiste de cinco unos consecutivos comenzando en el tiempo n = 2.
Estas señales pueden ser definidas en Matlab usando los siguientes comandos:

>> h = ones(1,10);

>> x = ones(1,5);

La salida se obtiene y es graficada usando los siguientes comandos:

>> n = 2:15;

>> y = conv(x, h);

>> stem(n, y);

En este ejemplo, el primer elemento del


vector y corresponde al tiempo n = 2 + 0
como se muestra en la siguiente figura.

RESPUESTAS EN ESTADO ESTABLE A ENTRADAS ESCALÓN UNITARIO

La respuesta escalón, es la salida de un sistema en respuesta a una señal de entrada escalón


unitario. Esta respuesta es infinita en general. Sin embargo, es posible evaluar los primeros
p valores de la respuesta escalón usando la función conv.

Si la respuesta al impulso es cero para los tiempos n<kh, entonces el cálculo se realiza
convolucionando los primeros p valores de h[n] con una señal paso de longitud p. Es decir
se construye un vector h’ con los primeros p valores diferentes de cero de la respuesta al
impulso h, luego se define una señal paso de duración p con el siguiente comando
u=ones(1,p), y entonces se evalúa la siguiente convolución s = conv(u,h). El primer
elemento de s corresponde a el tiempo kh y los primeros p valores de s representan los
primeros p valores de la respuesta paso. Los valores sobrantes de s no corresponden a la
respuesta paso.

Por ejemplo se podría determinar los 50 primeros valores de la respuesta paso del sistema
con la siguiente respuesta al impulso:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 27


Con a = 0.9 los comandos de Matlab serían:

>> h = (-0.9).^[0:49];

>> u = ones(1,50);

>> s= conv(u, h);

El vector s tienen 99 valores, los primeros 50 corresponden a la respuesta impulso y es


mostrada en la siguiente figura usando el siguiente comando:

>>stem([0:49],s(1:50));

En este ultimo comando se pasan a la función stem dos parámetros diferentes a los
mostrados en los anteriores ejemplos, el primero es un vector anónimo de 50 posiciones
desde 0 hasta 49 que representa el tiempo, se dice que el vector es anónimo puesto que no
se le ha definido algún nombre. El segundo parámetro es el vector s que se había calculado
anteriormente, pero en este caso se agrega la fracción de código (1:50) que indica a Matlab
que debe usar tan solo los elementos de s que están almacenados desde la posición 1 hasta
la 50.

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 28


DISTRIBUCIONES DE PROBABILIDAD

La siguiente tabla muestra las distintas distribuciones de probabilidad disponibles en


Matlab tanto para variables continuas como para variables discretas.

Continuas Discretas
Beta Binomial
Exponencial Uniforme Discreta
Valor Extremo
Gamma Geométrica
Valor Extremo generalizada
Pareto Generalizada
Lognormal Hiper-Geométrica
Normal Binomial Negativa
Rayleigh Poisson
Uniforme
Chi-square
Chi-square no central
Weibull

En esta sección se provee una revisión de algunas distribuciones de probabilidad


comúnmente usadas. Se cubrirán dos distribuciones discretas muy importantes: La binomial
y la Poisson.

En Matlab existen dos sufijos que ayudan a clasificar las funciones entre aquellas que son
funciones de densidad de probabilidad y las que son funciones de distribución
acumulativas. La función de densidad de probabilidad usa el sufijo PDF de las siglas del
ingles (Probability Density Function). La función de distribución acumulativa usa el sufijo
CDF de las siglas del ingles (Cumulative Distribution Function).

Funciones de densidad de probabilidad

Para distribuciones discretas, la PDF es la probabilidad de observar un resultado particular.


Para distribuciones continuas la probabilidad de observar un valor particular es cero. Para
obtener estas probabilidades se debe integrar sobre un intervalo de interés, por ejemplo la
probabilidad de que el grosor de un video cassete este entre 1 y 2 mm, es la integral de la
función PDF apropiada desde uno hasta dos.
Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 29
Una función PDF tiene dos propiedades teóricas:

 La función es positiva o cero para cualquier resultado.


 La integral de una función PDF sobre su rango completo de valores es uno.

Funciones de distribución acumulativas

Si f en una función de densidad de probabilidad para una variable aleatoria X, la función de


distribución acumulativa o CDF asociada llamada F es:

El valor de una CDF de un valor x, es decir F(x), es la probabilidad de observar algún


resultado que sea menor o igual que x.

Una función CDF tiene las siguientes propiedades.

El rango de la función es de 0 hasta 1.

Si y>x, entonces el CDF de y es mayor o igual que el del CDF de x

Distribución Binomial.

Se tiene un experimento, cuyo resultado pueda ser identificado como “éxito” o “fracaso”.
Si X=1 denota un resultado de éxito y X=0 denota un resultado de fracaso, entonces se
puede escribir una función de probabilidad como se muestra a continuación:

Donde p representa la probabilidad de un resultado exitoso. Una variable aleatoria que se


rige a través de esta función de probabilidad donde se cumple que 0 < p < 1 es llamada una
variable aleatoria de Bernoulli.

Ahora, supóngase que se repite este experimento n veces, donde cada intento es
independiente (el resultado de un intento no influye en el resultado del otro) y donde el
experimento resulta en éxito con una probabilidad p. Si X denota el número de éxitos en los
n intentos, entonces X se rige por una distribución Binomial con parámetros (n, p).

Para calcular la probabilidad binomial, se usa la siguiente formula:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 30


Obsérvese el siguiente ejemplo el cual hace uso del Toolbox de Estadística de Matlab:

Existe un 20% de oportunidad que un adulto Americano sufra de un desorden psiquiátrico.


Aleatoriamente se muestrean 25 adultos Americanos. Si X representa el número de
personas las cuales tienen un desorden psiquiátrico, entonces X es una variable aleatoria
Binomial con parámetros (25, 0.20). Se esta interesado en la probabilidad de que máximo 3
de las personas encuestadas tengan tal desorden.

Para resolver este problema se puede hacer el uso de la función binocdf, para determinar P(
X ≤ 3 ) de la siguiente manera:

>>prob = binocdf(3,25,0.2);

También se puede calcular la suma de los valores individuales de la función de


probabilidad desde X=0 hasta X=3 así:

>>prob2=sum(binopdf(0:3,25,0.2));

Ambos comandos retornan la probabilidad de 0.234

Los siguientes comandos generan una grafica de una pdf binomial para n=10 y p= 1/2

>> x = 0:10;

>> y = binopdf(x,10,0.5);

>> plot(x,y,'+')

Distribución de Poisson.

Una variable aleatoria X es una variable aleatoria que se rige por la distribución de Poisson
con un parámetro λ, con λ>0, si satisface la siguiente expresión:

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 31


La distribución de Poisson puede ser usada en muchas aplicaciones. Ejemplos de estas
situaciones en las cuales se involucra una variable aleatoria discreta son:

 El numero de errores tipográficos en una página.


 El numero de vacantes en una compañía durante un mes.
 El numero de defectos en una longitud de cable.

La distribución de Poisson es a menudo usada para aproximar la Binomial. Cuando n es


largo y p es pequeño de manera que n*p es un numero moderado entonces el numero de
éxitos que ocurren pueden ser aproximados por una variable aleatoria de Poisson con el
parámetro λ=n*p.

El siguiente ejemplo muestra el uso de las funciones de Matlab para el cálculo de


probabilidades con la distribución de Poisson.

Mientras se estuvo preparando este texto, se realiza la revisión ortográfica con un asistente
de ayuda El asistente arrojo los resultados y se determino que los errores por página se
rigen por la distribución de Poisson con parámetro λ=0.25. En seguida se calcula la
probabilidad de que una página tenga al menos dos errores:

Esta probabilidad se puede calcular con la función posscdf de la siguiente manera.

Nótese que la siguiente expresión muestra la forma general de una función de distribución
acumulativa para una variable aleatoria discreta.

Luego la expresión P(X=0) + P(X=1) es la función de distribución acumulativa en la cual el


parámetro a de la ecuación anterior es igual a 1. Luego el comando para el cálculo de la
probabilidad será el siguiente:

prob = 1- poisscdf(1,0.25);

El siguiente listado de comandos muestra el uso de la función poisspdf

>> x = 0:15;

>> y = poisspdf(x,5);

>> plot(x,y,'+')

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 32


Bibliografía

 Getting Started with MATLAB®


The Language of Technical Computing
Version 7
www.mathworks.com
 Creating Graphical User Interfaces
MATLAB®
The Language of Technical Computing
Version 1
www.mathworks.com
 Getting Started with MATLAB
Edward Neuman
Department of Mathematics
Southern Illinois University at Carbondale
edneuman@siu.edu
 Analysing Random Processes using
MATLAB at the Master’s Level
John Soraghan. Department of Electronic and Electrical Engineering. University of
Strathclyde
 Signals and Systems with MATLAB® Applications.Second Edition.
Steven T. Karris.
Orchard Publications
www.orchardpublications.com
 Aprenda Matlab 5.3 como si estuviera en primero
Javier García de Jalón · José Ignacio Rodríguez · Alfonso Brazález
Escuela Técnica Superior de Ingenieros Industriales
Universidad Politécnica de Madrid
Madrid Febrero 2001
 Signal and Systems
Simon Haykin - Barry Van Veen
Wiley -1999
 Computational Statistic Handbook with Matlab
Wendy L Martinez. - Angel R Martionez.
Chapman and Hall / CRC- 2002

Bibliografía en Internet

1. http://www.pue.udlap.mx/~tesis/lep/palacios_n_jc/indice.html
2. users.ece.gatech.edu/~bonnie/book/TUTORIAL/tut_1.html
3. w3.impa.br/~zubelli/tutorial/
4. www.angelfire.com/la/hmolina/matlab1.html
5. www.math.ufl.edu/help/ matlab-tutorial/matlab-tutorial.html
6. www.math.utah.edu/lab/ms/matlab/matlab.html
7. www.monografias.com/trabajos13/tumatlab/tumatlab.shtml
8. www.abcdatos.com/tutoriales/tutorial/l4612.html
9. Libros relacionados
10. Documentacion tecnica

Universidad Tecnológica de Chihuahua [EdSanSol® 1109220122] Página 33