PROCESAMIENTO DIGITAL DE S
UNIVERSIDAD TECNOLOGICA DEL PER
Curso
Profesora
Tema
Turno
Integrantes
:
:
Procesamiento digital de seales
Nolasco Corrales Marlene Azucena
:
Laboratorio N 07
: Noche
:
Narvez Espinoza Jorge Adrian
Gonzales Riveros Tefilo Ral
2016-II
LABORATORIO N08
1.-OBJETIVO:
Utilizar la transformada rpida de Fourier para obtener la descomposicin de
una seal discreta en sus armnicos.
2.-MARCO TEORICO:
FFT es la abreviatura usual (del ingls Fast Fourier Transform) de un eficiente
algoritmo que permite calcular la transformada de Fourier discreta (DFT) y su
inversa. La FFT es de gran importancia en una amplia variedad de
aplicaciones, desde el tratamiento digital de seales y filtrado digital en general
a la resolucin de ecuaciones en derivadas parciales o los algoritmos de
multiplicacin rpida de grandes enteros. El algoritmo pone algunas
limitaciones en la seal y en el espectro resultante. Por ejemplo: la seal de la
que se tomaron muestras y que se va a transformar debe consistir de un
nmero de muestras igual a una potencia de dos. La mayora de los
analizadores TRF permiten la transformacin de 512, 1024, 2048 o 4096
muestras. El rango de frecuencias cubierto por el anlisis TRF depende de la
cantidad de muestras recogidas y de la proporcin de muestreo.
Uno de los algoritmos aritmticos ms ampliamente utilizados es la
transformada rpida de Fourier, un medio eficaz de ejecutar un clculo
matemtico bsico y de frecuente empleo. La transformada rpida de Fourier
es de importancia fundamental en el anlisis matemtico y ha sido objeto de
numerosos estudios. La aparicin de un algoritmo eficaz para esta operacin
fue una piedra angular en la historia de la informtica.
Las aplicaciones de la transformada rpida de Fourier son mltiples. Es la base
de muchas operaciones fundamentales del procesamiento de seales, donde
tiene amplia utilizacin. Adems, proporciona un medio oportuno para mejorar
el rendimiento de los algoritmos para un conjunto de problemas aritmticos
comunes.
El anlisis espectral se refiere al proceso de descomposicin de una seal en
sus componentes de frecuencia. Con este anlisis se obtiene de cada
componente de frecuencia una magnitud y una fase que representan lo que
conocemos como transformada de Fourier. Para el caso de seales discretas
se tiene la correspondiente transformada de Fourier de tiempo discreto (DTFT),
la cual es una representacin de la misma seal pero en el domino de la
frecuencia discreta. Con la DTFT se obtiene una funcin continua de la
frecuencia discreta que se puede obtener directamente de la expresin
matemtica que la define,
Si la seal a analizar fuera de duracin infinita sera imposible evaluar
numricamente la expresin anterior debido a las limitaciones de memoria en
los equipos de cmputo. Sin embargo si la seal es de duracin finita entonces
la ecuacin se puede calcular para cualquier valor de frecuencia.
Desafortunadamente la cantidad de operaciones y los requerimientos de
memoria aumentan de forma exponencial con el nmero de muestras.
Para sobrepasar este inconveniente se defini una nueva transformada
denominada transformada discreta de Fourier DFT que equivale al
desarrollo en series de Fourier para la seal a analizar. Para esto se supone
que la seal representa solo un periodo de una seal ficticia de la cual se
calcula su serie. Adems se desarroll la trasformada rpida de Fourier FFT
que calcula la DFT mediante un la algoritmo que realiza las operaciones de
forma eficiente.
Existe una rutina en Matlab fft que calcula la FFT y que puede usarse para
analizar espectralmente una secuencia de duracin finita. La funcin
regresa el mismo nmero de datos que los que se ingresan. Si se utiliza
una secuencia de 10 elementos la fft regresa 10 datos que representan los
componentes de frecuencia de la secuencia original espaciados por 2/N
radianes, donde N representa el nmero de muestras de la seal.
El orden en que la funcin fft de matlab entrega los componentes de
frecuencia es diferente a como estamos acostumbrados a graficarlos
(frecuencias positivas a la derecha y negativas a la izquierda), nos da los
componentes de frecuencia negativa a la derecha despus del ultimo
componente de frecuencia positiva.
Para ordenar los componentes de frecuencia en el orden acostumbrado se
utiliza la funcin fftshift.
Otras funciones comunes en el anlisis espectral son abs y angle la
primera para obtener el valor absoluto de una seal compleja y la segunda
para la fase.
3.-DESARROLLO:
Utilizar la transformada rpida de Fourier para obtener la descomposicin de
una seala discreta en sus armnicos.
3.1.-Graficar el contenido espectral de la seal:
X [ n]=cos (0.1 )
usando la transformada rpida de Fourier.
clc;
clear all;
close all;
n=linspace(0,40,4096);
f=cos(0.1*pi*n);
subplot(2,1,1)
plot(n,f);
title('Seal en el tiempo')
axis([0 40 -1.1 1.1])
nk=linspace(-206,205,4096);
F=fftshift(fft(f));
subplot(2,1,2)
stem(nk,abs(F))
title('Magnitud de frecuencia del especgro F')
3.2.- Generar una seal cuyas frecuencias sea 0.9 y graficar su
contenido espectral junto con la secuencia.
clc;
clear all;
close all;
n=linspace(0,4.44,4096);
nk=linspace(-206,205,4096);
xn=cos(0.9*pi*n);
xk1=fft(xn);
xk=fftshift(fft(xn));
k=nk;
subplot(3,1,1);
stem(nk,abs(xk));
title('Contenido espectral xk')
xn=ifft(xk1);
subplot(3,1,2);
stem(n,real(xn));
title('Secuencia de x[n]')
axis([0 4.44 -1.5 1.5])
subplot(3,1,3);
plot(n,real(xn));
title('Seal en t')
axis([0 4.44 -1.1 1.1])
3.3.-Generar una seal con tres tonos diferentes sobrepuestos cuyas
frecuencias son 0.1, 0.3 0.7 y graficar su contenido espectral junto
con la secuencia. En este caso la expresin matemtica para la seal a
analizar es una suma de tres funciones coseno a las frecuencias
mencionadas.
clc;
clear all;
close all;
n=linspace(0,20,64);
nk=linspace(-32,31,64);
xn=cos(0.1*pi*n)+cos(0.3*pi*n)+cos(0.7*pi*n);
xk1=fft(xn);
xk=fftshift(fft(xn));
k=nk;
subplot(3,1,1);
stem(nk,abs(xk));
title('Contenido espectral xk')
axis([-32 31 0 40])
xn=ifft(xk1);
subplot(3,1,2);
stem(n,real(xn));
title('Secuencia de x[n]')
subplot(3,1,3);
plot(n,real(xn));
title('Seal en t')
3.4.-Analizar el contenido espectral de la seal impulso unitario localizado
en n=100 con 0<n<200. Aqu hay que generar la secuencia definida desde
n=0 hasta n=200 con un impulso unitario en n=100 y despus aplicar la fft.
clc;
clear all;
close all;
xn=zeros(1,200);
xn(100)=1;
subplot(2,1,1);
stem(xn);
title('Seal x[n]')
axis([0 200 0 1.1])
xk=fft(xn);
subplot(2,1,2);
stem(abs(xk));
title('Contenido espectral xk')
axis([0 200 0 1.1])
3.5.- Analizar el contenido espectral de la seal impulso unitario
localizado en n=0 con 0<n<200. Se procede igual que en 4.
clc;
clear all;
close all;
xn=zeros(1,200);
xn(1)=1;
subplot(2,1,1);
stem(xn);
title('Seal x[n]')
axis([0 200 0 1.1])
xk=fft(xn);
subplot(2,1,2);
stem(abs(xk));
title('Contenido espectral xk')
axis([0 200 0 1.1])
3.6.Analizar el contenido espectral de las siguientes seales
a) x(n)=5[u(n)-u(n-20)]
-20<n<40 Pulso rectangular
clc;
clear all;
close all;
n=linspace(-20,40,61);
xn=zeros(1,61);
xn(21:40)=1;
subplot(2,1,1);
stem(n,xn);
title('Seal x[n]')
axis([-20 40 0 1.2])
subplot(2,1,2);
nk=-30:30;
xk=fftshift(fft(xn));
stem(nk,abs(xk));
title('Contenido espectral xk')
axis([-30 30 0 22])
b) x(n)=
n
25
[u(n)-u(n-100)]
clc;
clear all;
close all;
n=-100:200;
nx=zeros(1,301);
nx(101:200)=1;
A=(pi/25)*n;
y=sin(A);
z=y.*nx;
subplot(2,1,1);
stem(n,z);
title('Seal x[n]')
axis([-100 200 -1.2 1.2])
subplot(2,1,2);
nk=-150:150;
xk=fftshift(fft(z));
stem(nk,abs(xk));
title('Contenido espectral xk')
axis([-50 50 0 55])
-100<n<200 pulso sinusoidal
3.7.- un pulso rectangular con inicio en n=100 y fin en 150 con 0<n<200.
Igual pero se genera un pulso en lugar de un impulso.
clc;
clear all;
close all;
n=0:200;
xn=zeros(1,201);
xn(101:150)=1;
subplot(2,1,1);
stem(n,xn);
title('Seal x[n]')
subplot(2,1,2);
nk=-200:100;
xk=fftshift(fft(xn));
stem(nk,abs(xk));
title('Contenido espectral xk')
4.-Conclusiones:
El espectro de las frecuencia no sufre alteraciones, as la funcin haya
sido desplazada en el tiempo.
Las seales seno y coseno son representados por medio de las
funciones Delta Dirac o impulsos unitarios.
El espectro de las frecuencias de una funcin de impulso en el tiempo es
una funcin constante unitaria.
Con el espectro de frecuencias podemos analizar el comportamiento de
la seal a lo largo de la frecuencia, podemos ver el comportamiento de
su magnitud
En el espectro de frecuencia, tomamos ms importancia a la magnitud
que a la fase de la funcin
Para aplicar la transformada rpida de Fourier en Matlab tenemos que
tener en cuenta que el nmero de puntos se mltiplo de
Se comprueba el comando fftshift para graficar correctamente el
espectro de las frecuencia
Se comprueba el uso de los comando fft e ifft para la transformada de
Fourier y transformada de Fourier inversa respectivamente.