You are on page 1of 31

MANUAL BSICO DE MANEJO DE FOURIER

UTILIZANDO LA HERRAMIENTA MATLAB






FACULTAD DE INGENIERA EN CIENCIAS
APLICADAS
CIERCOM
Rosa Hermosa

NDICE
Contenido
Objetivos del Tutorial ....................................................................................................................... 4
INTRODUCCIN .............................................................................................................................. 4
ORIGEN ......................................................................................................................................... 4
INICIACIN AL MATLAB ............................................................................................................ 5
CARACTERSTICAS DEL ENTORNO ......................................................................................... 5
Toolbox especiales ....................................................................................................................... 6
Command Window ....................................................................................................................... 6
Command History ......................................................................................................................... 7
El workspace (lugar de trabajo).................................................................................................. 7
Current Directory .......................................................................................................................... 7
Libreras ......................................................................................................................................... 8
Matlab Editor/Debugger ............................................................................................................... 8
Comando Help .............................................................................................................................. 8
FOURIER EN MATLAB ................................................................................................................... 9
Representacin grfica con Matlab ......................................................................................... 10
Frecuencia de la seal ................................................................................................................... 12
Amplitud de la Seal y Componente Continua .......................................................................... 14
Modificacin de la fase .................................................................................................................. 15
Valores Caractersticos de una Seal Senoidal .................................................................... 16
Suma de ondas senoidales....................................................................................................... 16
SEALES ESPECIALES .............................................................................................................. 17
Seal escaln, u(t) ..................................................................................................................... 17
Seal pulso, rect(t), amplitud 1................................................................................................. 18
Seal sampling (S
a
(t) = y Sinc(t)= ................................................................. 18
COMANDOS DE FOURIER EN MATLAB .................................................................................. 19
Transformada de Fourier ........................................................................................................... 19
Transformada Rpida de Fourier ............................................................................................. 19
Clculo de la Transformada Rpida de Fourier ..................................................................... 19
Inversa de la transformada de Fourier .................................................................................... 20
TRANSFORMADA DE FOURIER DISCRETA - DFT ............................................................... 21
Transformada de Fourier Discreta ........................................................................................... 21
Sintaxis ..................................................................................................................................... 21
PROPIEDADES DE LA DTF ........................................................................................................ 22
LINEALIDAD ............................................................................................................................... 22
Homogeneidad ........................................................................................................................ 22
Aditibilidad ............................................................................................................................... 22
PERIODICIDAD .............................................................................................................................. 23
Dominio del tiempo ..................................................................................................................... 23
Dominio de la frecuencia ........................................................................................................... 23
COMPRESIN Y EXPANSIN ................................................................................................... 24
TRANSFORMADA COSENO DISCRETO DCT ..................................................................... 25
Aplicaciones de la FFT .................................................................................................................. 27
Respuesta en Frecuencia ......................................................................................................... 27
CONCLUSIONES ........................................................................................................................... 30
BIBLIOGRAFA ............................................................................................................................... 30








Objetivos del Tutorial

Determinar las funciones principales para el desarrollo de anlisis de Fouier
de determinadas seales.
Analizar determinadas seales con ayuda de matlab, simplificando los
extensos procedimientos vistos en clases.
Ayudar a entender la herramienta, aplicando el anlisis terico de seales
con los distintos comandos que nos ofrece matlab.
INTRODUCCIN

Matlab es un programa interactivo para clculo numrico y tratamiento de datos,
contiene muchas herramientas y utilidades que permiten adems diversas
funcionalidades, como la presentacin grfica en 2 y 3 dimensiones.

MATLAB integra anlisis numrico, clculo matricial, proceso de seal y
visualizacin grfica en un entorno completo donde los problemas y
sus soluciones son expresados del mismo modo en que se escribiran
tradicionalmente, sin necesidad de hacer uso de la programacin tradicional.

A Matlab se le pueden aadir paquetes especializados para algunas tareas (por
ejemplo, para tratamiento de imgenes). Esos tiles estn agrupados en
"paquetes" (toolboxes).

Matlab es un programa command-driven, es decir, que se introducen las rdenes
escribindolas una a una a continuacin del smbolo (prompt) que aparece en
una interfaz de usuario (una ventana).

ORIGEN

MATLAB nace como una solucin a la necesidad de mejores y ms poderosas
herramientas para resolver problemas de clculo complejos en los que es
necesario aprovechas las amplias capacidades de proceso de datos de grandes
computadores.

El nombre MATLAB viene de "matrix laboratory" (laboratorio matricial). MATLAB
fue originalmente escrito para proveer acceso fcil al software matricial
desarrollado por los proyectos LINPACK y EISPACK, que juntos representan el
estado del arte e software para computacin matricial. Hoy MATLAB es usado en
una variedad de reas de aplicacin incluyendo procesamiento de seales e
imgenes, diseo de sistemas de control, ingeniera financiera
e investigacin mdica. La arquitectura abierta facilita usar MATLAB y los
productos que lo acompaan para explorar datos y crear herramientas
personalizadas que proveen visiones profundas tempranas y ventajas
competitivas.

INICIACIN AL MATLAB

El Lenguaje de Computacin Tcnica MATLAB es un ambiente de computacin
tcnica integrada que combina computacin numrica, grficos y visualizacin
avanzada y un lenguaje de programacin de alto nivel.
Sea cual fuere el objetivo, un algoritmo, anlisis, grficos, informes o simulacin,
MATLAB lo lleva consigo. El lenguaje flexible e interactivo de MATLAB permite a
ingenieros y cientficos expresar sus ideas tcnicas con simplicidad. Los
poderosos y amplios mtodos de cmputo numrico y graficacin permiten la
prueba y exploracin de ideas alternativas con facilidad, mientras que el ambiente
de desarrollo integrado facilita producir resultados prcticos fcilmente.

MATLAB es la fundacin numrica y grfica para todos los productos de The
MathWorks, combina computacin numrica, grficos 2D y 3D y capacidades de
lenguaje en un nico ambiente fcil de usar.
Con su amplio rango de herramientas para modelar sistemas de control, anlisis,
simulacin y procesamiento de prototipos, MATLAB es el sistema ideal para
desarrollar sistemas avanzados.
Combinando MATLAB con Signal Processing Toolbox, Wavelet Toolbox y un
conjunto de herramientas complementarias - tales como Image Processing, Neural
Network, Fuzzy Logic, Statistics y otras - usted puede crear un ambiente de
anlisis personalizado de seales y desarrollo de algoritmos DSP. Para simulacin
y desarrollo de prototipos usted puede agregar Simulink y el DSP Blockset para
modelar y simular sus sistemas DSP, y luego usar Real-Time Workshop para
generar cdigo C para su hardware designado.
CARACTERSTICAS DEL ENTORNO

Clculos intensivos desde un punto de vista numrico.
Grficos y visualizacin avanzada.
Lenguaje de alto nivel basado en vectores, arrays y matrices.
Coleccin muy til de funciones de aplicacin.
Las poderosas capacidades de clculo tcnico de MATLAB se ponen a la
disposicin de los estudiantes, aunque limita el tamao de las matrices a 8192
elementos, la edicin de estudiante mantiene toda la potencia de la versin
profesional.

Toolbox especiales

MATLAB dispone tambin en la actualidad de un amplio abanico de programas de
apoyo especializados, denominados Toolboxes, que extienden significativamente
el nmero de funciones incorporadas en el programa principal. Estos Toolboxes
cubren en la actualidad prcticamente casi todas las reas principales en el
mundo de la ingeniera y la simulacin, destacando entre ellos el 'toolbox' de
proceso de imgenes, seal, control robusto, estadstica, anlisis
financiero, matemticas simblicas, redes neurales, lgica difusa, identificacin
de sistemas, simulacin de sistemas dinmicos, etc. es un entorno de clculo
tcnico, que se ha convertido en estndar de la industria, con capacidades no
superadas en computacin y visualizacin numrica.
De forma coherente y sin ningn tipo de fisuras, integra los requisitos claves de
un sistema de computacin tcnico: clculo numrico, grficos, herramientas para
aplicaciones especficas y capacidad de ejecucin en mltiples plataformas.
Esta familia de productos proporciona al estudiante un medio de carcter nico,
para resolver los problemas ms complejos y difciles.



Command Window

La ventana de comandos (Command Windows) es el lugar donde se ingresan las
variables, se ejecutan funciones y se corren los archivos M. Los comandos se
escriben a continuacin de >> y se ejecutan con la tecla Enter.



Command History

En esta ventana se van guardando los comandos ejecutados en la ventana de
comandos, es muy til para visualizar funciones ejecutadas anteriormente, lo nico
que se necesita hacer es seleccionar la funcin con el mouse y hacer doble click
en la misma para que la funcin o comando se ejecute nuevamente.



El workspace (lugar de trabajo)

El workspace es una metfora del espacio de memoria que contiene a todas las
variables con las que est trabajando. Al cerrarse Matlab toda esta informacin se
pierde, por lo que es, nuevamente, recomendable el uso de programas preescritos
(scripts) para volver a generar toda la informacin.

Para ver las variables del workspace as como tambin informacin de las mismas
se puede utilizar el Workspace Browser (perteneciente al escritorio de Matlab) o
ejecutar las funciones who y whos desde la lnea de comandos de la ventana de
comandos.



Current Directory

La ventana Current Directory muestra los ficheros del directorio activo o actual.
El directorio activo se puede cambiar desde la Command Window, o desde la
propia ventana o a su vez desde la barra de herramientas, debajo de la barra de
mens, con los mtodos de navegacin de directorios propios de Windows.

Libreras

Una librera es una serie de funciones (archivos *.m) que permiten encarar
determinados problemas. Una de las ventajas de Matlab, es que su cdigo es
abierto. Esto quiere decir que cualquier funcin de las libreras, estndar o no,
puede ser editada y modificada. Es decir que una funcin cualquiera que ya venga
incluida en el paquete no difiere demasiado de una funcin que nosotros podamos
escribir.
Matlab Editor/Debugger

Matlab cuenta con un editor de texto, que tambin efecta acciones de debugging,
en donde pueden escribirse los scripts. El editor resalta en distintos colores las
palabras reservadas, las cadenas de string.


Comando Help

Este comando nos permite solicitar ayuda sobre cualquier comando o funcin que
se encuentre instalada en Matlab.
Escribiendo help en la lnea de comando, el programa devuelve un listado de
todas las libreras instaladas. Entonces:

help




Para pedir ms detalles sobre las funciones que pertenecen a una librera dada,
ingresamos help seguido del nombre de la librera. Por ejemplo:

helptools

Nos da acceso a la ayuda en lnea de HTML, a la informacin sobre los productos
de The MathWorks y soporte tcnico.




Al final de la ayuda nos remite a algunos temas relacionados para que podamos
continuar la bsqueda, si es que no terminamos de encontrar lo que buscbamos.
Ante cualquier duda sobre el help debemos tipear:

help help

Hay otro modo de ayuda, un poco ms cmodo, que se puede acceder desde el
men desplegable Help. El contenido es el mismo que el de la lnea de comandos,
solo que disponemos de un pequeo navegador.
FOURIER EN MATLAB

La afirmacin de Fourier de que cualquier seal contnua y peridica poda
representarse como la suma una serie de ondas senoidales adecuadamente
elegidas, se tratar ahora de aplicar, pero en sentido contrario. Generaremos
ondas senoidales y las sumaremos, para ver el resultado.

MATLAB es muy utilizado en la definicin, manipulacin y representacin de
seales analgicas. Siendo rigurosos, el procedimiento seguido en esos ejemplos
no es adecuado para el anlisis de seales analgicas; es ms, en general,
MATLAB no permite analizar seales analgicas, esto se debe a que la forma
natural de representar una seal en MATLAB es definir una secuencia finita de
valores mediante un vector fila.

Una de las ms importantes aplicaciones es para el Procesamiento Digital de
Seales donde podemos observar la Frecuencia fundamental de una seal en
especial.

Por tanto, en Matlab toda seal es discreta en tiempo, mientras que en amplitud
puede ser discreta (cuantizada) o continua (aunque limitada por la precisin de los
tipos numricos). Sin embargo, si los intervalos temporales entre valores son
suficientemente pequeos y el rango temporal en que se define la seal es
suficientemente amplio, la secuencia de valores empleada para representar la
seal y las operaciones realizadas para su anlisis proporcionan una buena
aproximacin a los resultados tericos.

Representacin grfica con Matlab

Matlab tiene una gran librera de funciones matemticas, entre ellas las
trigonomtricas como la funcin seno.

y =sin(x)

Para obtener el seno de un nmero simplemente se escribe la funcin. Una de las
ventajas del uso de Matlab es que las expresiones matemticas se escriben de
manera muy similar a como se hara sobre el papel.

>> sin (90)
ans = 0.8940

Nota: las funciones trigonomtricas en Matlab utilizan como unidades para los
ngulos los radianes, no los grados. Una circunferencia de 360 tiene 2 veces
radianes. Matlab utiliza las letras pi para dicho nmero

>>sin(pi/2)
ans = 1

Otra de las ventajas fundamentales de Matlab es el trabajo sencillo con matrices o
tablas de datos. Una tabla de datos (con tantas filas y columnas) se introduce
teclendola y utilizando como separadores los smbolos coma, punto y coma y
corchetes.

>> [2,3,4]
ans =
2 3 4
>> [2;3;4]
ans =
2
3
4

>> [2,3;4,5]
ans =
2 3
4 5

Si aplicamos una funcin como el seno, a una tabla de datos, el resultado ser
otra tabla del mismo tamao en la que se ha aplicado la funcin a cada elemento

>>sin([2,3,4])
ans =
0.9093 0.1411 -0.7568

Una serie de datos puede verse como una tabla de una nica fila o columna, y
podr representarse por medio de muchos tipos diferentes de grficos (lneas,
barras, colores).
Las seales biolgicas, una vez digitalizadas, sern slo eso: series de nmeros.
Los resultados en forma de valores sueltos y series o tablas de datos, pueden
guardarse para no perder la informacin. Para ello se utilizarn variables. La forma
de guardar un determinado contenido en una variables es el smbolo =

>> a= [5,6,7]
a =
5 6 7
>> a
a =
5 6 7

Las variables se podrn usar dentro de las frmulas, como veremos a
continuacin, pero empezaremos usando una serie que representar el tiempo
desde 0 a 1 segundo en intervalos de una dcima.

>> t=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1];
>> t=[0:0.1:1]
t =
Columns 1 through 4
0 0.1000 0.2000 0.3000
Columns 5 through 8
0.4000 0.5000 0.6000 0.7000
Columns 9 through 11
0.8000 0.9000 1.0000

Matlab utiliza el punto . como smbolo decimal, y la coma , para separar valores
en una tabla. Puede generar listas regulares de nmeros escribiendo
[inicio:paso:fin].

Si aplicamos ahora la funcin seno a nuestra variable t y guardamos el contenido
en otra variable (x) tendremos una nueva tabla de valores.

x=sin(t)
x =
Columns 1 through 4
0 0.0998 0.1987 0.2955
Columns 5 through 8
0.3894 0.4794 0.5646 0.6442
Columns 9 through 11
0.7174 0.7833 0.8415

Para realizar la representacin grfica utilizaremos la funcin plot.

>> plot(x)


A continuacin se realizar diferentes ondas senoidales. Partiremos de una
funcin sencilla e iremos modificando los valores que las caracterizan, como son
la amplitud, la frecuencia y la fase. Al mismo tiempo veremos la necesidad de
utilizar un nmero mnimo de puntos para representar bien una seal, a medida
que realicemos cambios sobre la funcin inicial sin(t).
Frecuencia de la seal
Modificaremos la frecuencia de la seal senoidal multiplicando la variable t por un
nmero, por ejemplo 7, o 2

>> x=sin(7*t);
>> plot(t,x)








>> x=sin(2*pi*t);
>> plot(t,x)










Adems cuando el valor que multiplica a t es un mltiplo de 2, tendremos ciclos
completos de ondas.

>> x=sin(4*pi*t);
>> plot(t,x)











Podemos observar que el grfico que une los puntos del muestreo cada vez se
parece menos a la onda inicial continua. Estamos cerca de perder informacin.
Representaremos mejor la curva con ms puntos, vamos a probar con 100
intervalos en lugar de 10.

>> t=[0:0.01:1]
>> x=sin(4*pi*t)
>> plot(t,x)






Amplitud de la Seal y Componente Continua

Si multiplicamos el valor de la funcin seno por una constante, estaremos
multiplicando cada uno de los valores de la seal por ese nmero, y estaremos
cambiando la amplitud de variacin de la curva.

>> t=[0:0.01:1]
>> x=5*sin(4*pi*t)
>> plot(t,x)











La seal generada tiene la misma forma que la anterior, pero ahora vara entre un
mnimo de -5 y un mximo de 5. Hemos cambiado su amplitud.

Tambin se puede representar grficamente varias curvas juntas usando
plot(t,x1,t,x2), en esta ocasin utilizaremos el punto y coma final para que no nos
muestre todo el historial de nmeros.

>> t=[0:0.01:1]
>> x1=6*sin(4*pi*t);
>> x2=4*sin(4*pi*t);
>> plot(t,x1,t,x2)











Si le sumamos a todos los valores una constante, habremos variado el valor medio
de la seal, esta es la componente continua. Ahora el rango de variacin ha
subido, tanto el mnimo como el mximo.

>> t=[0:0.01:1]
>> x1=6*sin(4*pi*t);
>> x2=3+6*sin(4*pi*t);
>> plot(t,x1,t,x2)







Modificacin de la fase

Si sumamos un valor constante a la escala de tiempo, veremos que estamos
desplazando la seal, que ya no comenzar en cero. Esa diferencia temporal la
llamaremos fase (a veces tambin desfase).

>> t=[0:0.01:1]
>> x=6*sin(4*pi*t+3)
>> plot(t,x)

















Realizamos una comparacin

>> x1=6*sin(4*pi*t);
>> x2=6*sin(4*pi*t+1);
>> x3=6*sin(4*pi*t+2);
>> plot(t,x1,t,x2,t,x3)








Valores Caractersticos de una Seal Senoidal

Hemos visto como modificar la frecuencia, la amplitud y la fase de una seal
senoidal. En el caso ms general, una onda senoidal vendr dada nicamente por
esos tres nmeros.

x = Asin(2ft + )

En Matlab

>>x=A*sin(2*pi*f*t+delta)

En donde:
A ser nuestra amplitud
f la frecuencia o nmero de ciclos por segundo
delta la fase
t puede ser un nmero o bien una tabla de valores para la que
queremos ver el resultado y dibujar un grfico.

Suma de ondas senoidales.

Al igual que sumamos nmeros, en Matlab podemos sumar tablas. La nica
condicin es que deben tener el mismo nmero de elementos, para as ser
sumados uno a uno. Si las tablas representan seales con la misma escala de
tiempo, estaremos sumando seales.

Ejemplo:

>> t=[0:0.01:1];
>> x1=5*sin(4*pi*t);
>> x2=2*sin(8*pi*t+1);
>> x3=x1+x2;
>> plot(t,x1,t,x2,t,x3)











El objetivo final del anlisis de Fourier ser separar cualquier seal en
componentes ms sencillas (senoidales) y en su caso, eliminar las que sobran,
como el ruido.
SEALES ESPECIALES
Seal escaln, u(t)

>> t=-10:0.01:10;
>> a_escalon=[zeros(1,1000), ones(1,1001)];
>> plot(t,a_escalon);











Seal pulso, rect(t), amplitud 1.

>> t=-10:0.01:10;
>> a_pulso=[zeros(1,950),ones(1,101),zeros(1,950)];
>> plot(t,a_pulso);










Seal sampling (S
a
(t) =
()

y Sinc(t)=
()



>> t=-10:0.01:10;
>> a_sampling = sin(t)./t;
Warning: Divide by zero.
>> plot(t,a_sampling);
>> a_sinc=sinc(t);
>> plot(t,a_sinc);



COMANDOS DE FOURIER EN MATLAB
Transformada de Fourier
Sintaxis
Fourier(f,trans_var,eval_point)

Transformada Rpida de Fourier
Sintaxis
Y=fft(x)
Y=fft(X,n)


Ejemplo 1:

fs= 1000;
t= 0 : 1/fs : 1.5 - 1/fs;
f1= 20;
f2= 30;
f3=40;
x=3*cos(2*pi*f1*t + 0.2) + 1*cos(2*pi*f2*t - 0.3) + 2*cos(2*pi*f3*t+2.4);
plot(x)


Clculo de la Transformada Rpida de Fourier

X = fft(x);
>> length(x)
ans =
1500
>> length(X)
ans =
1500
>> x(2:6)
ans =
2.0717 1.7535 1.4794 1.2572 1.0884
>> X(30:34)
ans =
1.0e+003 *
Columns 1 through 4
-0.0000 - 0.0000i 2.2051 + 0.4470i 0.0000 - 0.0000i 0.0000 + 0.0000i
Column 5
-0.0000 - 0.0000i
>> X_mag = abs(X);
>> X_mag(30:34)
ans =
1.0e+003 *
0.0000 2.2500 0.0000 0.0000 0.0000
>> plot(X_mag)



Inversa de la transformada de Fourier
Sintaxis
y=ifft()
y=ifft(X,n)


Ejemplo 1:

>> x=3*cos(2*pi*f1*t + 0.2) + 1*cos(2*pi*f2*t - 0.3) + 2*cos(2*pi*f3*t+2.4);
plot(x)
>> X = ifft(x);
>> length(x)
ans =
1500
>>
>> length(X)
ans =
1500
>> x(2:6)
ans =
2.0717 1.7535 1.4794 1.2572 1.0884
>> X(30:34)
ans =
-0.0000 + 0.0000i 1.4701 - 0.2980i 0.0000 + 0.0000i 0.0000 - 0.0000i -0.0000
+ 0.0000i
>> X_mag = abs(X);
>> X_mag(30:34)
ans =
0.0000 1.5000 0.0000 0.0000 0.0000
>> plot(X_mag)


TRANSFORMADA DE FOURIER DISCRETA - DFT

En DSP se utiliza la DFT (Transformada de Fourier Discreta) porque es la que se
puede procesar en un microcontrolador por ser discreta y finita.

Para resolver muchos problemas de ingeniera es conveniente descomponer una
seal dada en suma de funciones bsicas. Una forma razonable es tomar la seal
de entrada y representarla con la funciones bsicas con exponenciales complejas
o seales senoidales. Para seales discretas se usan la Transformada de Fourier
Discreta DFT y un clculo eficiente de ella es la transformada Rpida de Fourier
FFT.

Transformada de Fourier Discreta

Sintaxis
X(k) = DFT[x(n)], y x(n) = IDFT[X(k)]
PROPIEDADES DE LA DTF
LINEALIDAD
La Transformada de Fourier en lineal, esto es, tiene las propiedades de
homogeneidad y aditibilidad.

Homogeneidad


Aditibilidad



PERIODICIDAD
Dominio del tiempo



Dominio de la frecuencia







COMPRESIN Y EXPANSIN

Una compresin de la seal en un dominio resulta en una expansin en el otro y
viceversa. Para seales continuas, si X(f) es la Transformada de Fourier de x(t),
entonces, 1/k. X(f/k) es la Transformada de Fourier de x(kt) donde k es el
parmetro que controla la expansin o compresin.






Ejemplo:

Obtener la parte real y parte imaginaria. A continuacin se tiene la parte real e
imaginaria de la seal de su DFT

() e
jn/3


>> %DFT Parte Real e Imaginaria
>> n=0:15;
>> xn=exp(j*n/3);
>> Xk=fft(xn);
>> k=n;
>> subplot(221)
>> stem(k,real(Xk));
>> title('Parte Real de X(k)')
>> subplot(223)
>> stem(k,imag(Xk));
>> title('Parte Imaginaria de X(k)')
>> %Recuperar la seal x(n)
>> xn=ifft(Xk);
>> subplot(222)
>> stem(n,real(xn));
>> title('Parte Real de x(n)')
>> subplot(224)
>> stem(n,imag(xn));
>> title('Parte Imaginaria de x(n)')



Ejemplo:

Obtener la magnitud y la fase de la DFT de la seal

x(n) sen(2ft) sen(2f2t) f 5Hz y f2 40Hz

>> %Magnitud Y Fase
>> t=0:0.01:9.99; % 1000 puntos
>> f1=15;f2=40;
>> xn=sin(2*pi*f1*t)+ sin(2*pi*f2*t);
>> Xk=fft(xn);
>> mag=abs(Xk);
>> f=0:0.1:99.9;
>> subplot(121)
>> plot(f,mag)
>> title('Magnitud de X(k)')
>> set(gca,'Xtick',[15 40 60 85])
>> subplot(122)
>> fase=unwrap(angle(Xk));
>> plot(f,fase*180/pi)
>> title('Fase de X(k)')
>> set(gca,'Xtick',[15 40 60 85])

TRANSFORMADA COSENO DISCRETO DCT

Tiene mejor compactacin de energa que la DFT con pocos coeficientes
transformados til en aplicaciones de comunicacin de datos. La DCT es una
transformada completamente real a diferencia de la DFT que requiere nmeros
complejos. Matemticamente para una secuencia de entrada x(n), la DCT es:


() w(k) x(n)cos (
()()

) k 2 N



Donde,


La transformada Inversa coseno discreto IDCT es;

x(n) w(n)y(k)cos (
()()

) k 2 N


Donde,



Ejemplo:

Generar una secuencia senoidal de 25 Hz con frecuencia de muestreo de 1000
Hz, calcular la DCT y reconstruir la seal usando solamente los componentes con
valor mayor a 0.9 (17 coeficientes de los 1000 originales)

>> t= (0:1/999:1); % 1000 puntos
>> x= sin(2*pi*25*t);
>> y= dct(x); % calcula la DCT
>> y2= find(abs(y) < 0.9);
>> y(y2)= zeros(size(y2));

>> %size(y2)=983, solo se usarn 17 componentes
>> z= idct(y); % Seal Reconstruida
>> subplot(2,1,1); plot(t,x);
>> title('Seal Original')
>> subplot(2,1,2);
>> plot(t,z), axis([0 1 -1 1])
>> title('Seal reconstruida')








Respuesta en Frecuencia

Ejemplo:

Obtener la FFT de una seal senoidal de 20Hz sumada a una seal tipo chirp con
un desplazamiento desde 5 hasta 40Hz en un tiempo D.

>> D=1; N=128;
>> ts=D/N;
>> d=ts/2;
>> t=0:ts:D-d;
>> x=sin(2*pi*20*t)+chirp(t,5,D,40);

>> X=fft(x);
>> % Reordenar X
>> M=N/2;

>> Xaux=X;
>> X(M+1:N)=Xaux(1:M);
>> X(1:M)=Xaux(M+1:N);
>> Xm=abs(X)/N;

>> Xf=unwrap(angle(X))*180/pi;
>> %Reordenar los ndices k
>> faux(M+1:N)=0:M-1;

>> faux(1:M)=-M:-1;
>> f=faux/D;

>> % Grfica de la seal
>> figure;
>> plot(t,x,'-g');zoom;

>> xlabel('Tiempo (s)');ylabel('x(t)');
>> title('x(t)=sin(2Pi20t)+chirp(5-40)');


>> % Graficar fft de xn Xk
>> figure;
>> stem(f,Xm,'r')

>> zoom;
>> xlabel('Frecuencia (Hz)');ylabel('|X[k]|');
>> title('Mdulo de Coeficientes Espectrales |X[k]|');



>> %Grfica de la fase
>> figure;
>> stem (f,Xf,'g');zoom;
>> xlabel('Frecuencia (Hz)');ylabel('Fase ()');

>> title('Fase de Coeficientes Espectrales X[k]');


>> %Reconstruccin de la seal a partir de los X[k]
>> %Utilizamos un mayor nmero de puntos fs=500Hz
>> fs=500;
>> ts=1/fs;

>> d=ts/2;
>> t=0:ts:D-d;
>> Ns=length(t);
>> %x=sin(2*pi*20*t)+chirp([5 40]*ts,Ns);

>> x=sin(2*pi*20*t)+chirp(t,5,D,40);
>> xr=zeros(1,Ns);
>> for i=1:Ns
for k=1:N
xr(i)=xr(i)+X(k)*exp(j*2*pi*f(k)*ts*(i-1))/N;
end
end

>> figure;plot(t,x,'g-');hold on;plot(t,xr,'r--');zoom;

Warning: Imaginary parts of complex X and/or Y arguments ignored.
>> title('Comparacin entre x(t) y su reconstruccin a partir de X[k]');

>> xlabel('Tiempo (t)');ylabel('x(t)');


CONCLUSIONES

Matlab es una herramienta muy til y de gran ayuda que nos facilita el
entendimiento de todo tipo de seales, adems de que nos muestra ms
detalladamente el proceso y los cambios que realizamos en ellas.

Para realizar un proceso ntido de las seales en matlab hay que tener
conocimiento de los comandos que tiene este software, en este caso de
Fourier pudimos realizar un proceso de una manera mucho ms sencilla.

En la manipulacin de seales ya sean discretas o continuas se puede
realizar los cambios necesarios para poder estudiar y entender cada uno de
sus componentes, tanto en el dominio del tiempo como en el dominio de la
frecuencia.

BIBLIOGRAFA

http://es.wikipedia.org/wiki/MATLAB
http://mit.ocw.universia.net/13.00/NR/rdonlyres/27BBA896-7C03-4CCB-
8810-B02382E5B5D0/0/matlab_handout.pdf
http://www.monografias.com/trabajos5/matlab/matlab.shtml#ixzz2ldae7sby
http://www.ingelec.uns.edu.ar/icd2763/TECD_aux/Curso%20B%C3%A1sico
%20de%20MATLAB.pdf
http://matlabgeeks.com/tips-tutorials/how-to-do-a-fourier-transform-in-
matlab/
http://pds-fiuner.wdfiles.com/local--files/descargas/clase02_fourier-
laplace.pdf
https://www.youtube.com/watch?v=iKOrK1lHfmE
http://personal.us.es/contreras/practica4.pdf
http://www.ceduvirt.com/resources/Dsp1%20Fourier.pdf
https://www.youtube.com/watch?v=5I3Jt3Mg_3c
http://www2.imse-cnm.csic.es/~belen/Ficherospdf/practica2.pdf
http://www2.imse-cnm.csic.es/~belen/Ficherospdf/ficom-pr1.pdf
http://seriefouriererrorcuadraticomedio.wikispaces.com/Pulso+Triangular+y+
su+transformada+de+Fourier+Ejemplo+Desarrollado
http://www.slideshare.net/psyrcd/sa-fourier-con-matlab

You might also like