Sie sind auf Seite 1von 4

Laboratorio de Procesamiento de Señales. Ingeniería Civil Biomédica, Universidad de Valparaíso, Chile, 18 de Mayo de 2010, pag.

Laboratorio Nº4
“Introducción a la DFT”
Trabajo realizado por:
Rubén Allende Lobos.
Estudiante de Ingeniería Civil Biomédica, Departamento de Ingeniería Civil Biomédica, Universidad de Valparaíso

Resumen-En la sesión se trabajara con la transformada discreta tiempo al dominio de la frecuencia debido a que trabajo con
de fourier (DFT), de esta manera visualizar la transformación de todos los puntos del vector.
una señal en el espacio del tiempo al espacio de la frecuencia y
poder trabajar con filtros en la frecuencia.
Otro objetivo es comprender el uso del sitio web
http://www.physionet.org/ el cual contiene un banco de señales 2) Análisis espectral.
biológicas a disposición para estudios.
Matlab [1] trae en su librería implementa la DFT, en la sesión se Un proceso que cuantifica las diversas intensidades de cada
implementara el algoritmo de la DFT los resultados obtenidos frecuencia se llama análisis espectral [3]. Matemáticamente
con el algoritmo y los obtenidos con la librería serán está relacionado con la herramienta transformada de Fourier la
comparados. cual nos estrega el espectro de frecuencia y la amplitud de
cada una de las frecuencias de una señal análoga.
Palabras Claves- DFT, frecuencia, physionet.

I. INTRODUCCIÓN III. METODOLOGÍA

L a transformada de fourier es ampliamente


Estudiar el uso de la physionet para extraer señales del
banco de información que posee physionet, con las señales
empleada en el tratamiento y en campos afines para analizar obtenidas del banco se realizara un análisis espectral a través
las frecuencias presentes en una señal muestreada, resolver de la transformada de fourier, llevando la señal al dominio de
ecuaciones diferenciales parciales y realizar otras operaciones la frecuencia.
Agregar ruidos y ver la posibilidad se filtrar la señal
como convoluciones [2]. En esta sesión utilizaremos la DFT aislando el ruido, con la información que se obtiene en el
para analizar frecuencias presentes en señales muestreadas dominio de la frecuencia como es el ancho de banda el cual
extraídas de los bancos de información de physionet. nos permite saber que entre que frecuencia se encuentra la
mayor potencia de la señal, con esta información podremos
obtener las frecuencias de corte para el filtro.
II. MATERIALES Y CONCEPTOS PREVIOS

– Herramienta de modelamiento de Matlab. IV. RESULTADO Y ANÁLISIS


– Señal Obtenida de Physionet.
Actividades uno y dos se entendieron el uso de physionet y
el análisis espectral DFT.
Conceptos previos Actividad tres convertir la señal f (t) al dominio de la
frecuencia.
1) Transformada de Fourier (DFT)
ft=0.25+2*sin2*pi*5*t+sin2*pi*12.5*t+1.5*sin2*p
χk=n=0N-1χn×e-j×2×n×π×kN i*20*t+0.5*sin2*pi*35*t
k=0,1,2…N-1 Con el siguiente código se logro llevar la señal al dominio
de la frecuencia, en la fig1 podemos a preciar el grafico
La expresión representa la Trasformada de Discreta Fourier superior de la señal en el tiempo y en el inferior la señal en la
(DFT) de de una señal χn, la cual es una aproximación al frecuencia.
espectro de una señal analógica original. Su magnitud se ve
influenciada por el intervalo de muestreo, mientras que su fase
dependes de los instantes de muestreo.
La DFT presenta un problema suele tardar demasiado en
realizar el cambio de domino en este caso del dominio del %--------------------------------------
%Sesión 4
Laboratorio de Procesamiento de Señales. Ingeniería Civil Biomédica, Universidad de Valparaíso, Chile, 18 de Mayo de 2010, pag. 2
%Actividad 3 %Actividad 4
%-------------------------------------- %--------------------------------------
load a04m% cargar Señal ECG obtenida de
t=0:0.01:10;% Vector Tiempo Physionet
N=length(t); a=val;
T=0.01% Periodo de muestreo b = fft(a);% Obtener FFT de la señal
fm=1/T;%Frecuencia de muestreo fm=100;
N=length(b);
y=0.25+2*sin(2*pi*5*t)+sin(2*pi*12.5*t) f = fm/N*(0:N/2);% adpatamos el eje de la
+1.5*sin(2*pi*20*t)+0.5*sin(2*pi*35*t); frecuencia
subplot(2,1,1);
b=fft(y);% FFT de la señal plot(a)
f = fm/N *(0:N/2); title('Señal ECG'), xlabel('Tiempo'),
ylabel('Amplitud')
subplot(2,1,1); subplot(2,1,2);
plot(y) plot(f, abs(b(1:N/2 + 1)))% garficamos la
title('Señal f(t)'), xlabel('Tiempo'), mitab.
ylabel('Amplitud') title('Señal ECG en frecuencia'),
xlabel('Hz'), ylabel('Amplitud')
subplot(2,1,2);
plot(f, abs(b(1:N/2 + 1)))
title('Señal f(t)en el dominio de la S eñal E C G
600
frecuencia'), xlabel('Hz'),
ylabel('Amplitud') Amplitud 400

200

0
S e ñ a l f(t )
5
-200
0 100 200 300 400 500 600 700 800 900 1000
Tiem po
S eñal E C G en frec uenc ia
Amplitud

0 15000

10000
Amplitud

-5
0 200 400 600 800 1000 1200
5000
Tie m p o
S e ñ a l f(t )e n e l d o m in io d e la fre c u e n c ia
1000 0
0 5 10 15 20 25 30 35 40 45 50
Hz
Amplitud

500 Fig2. Señal ECG a04m.m en el dominio de la frecuencia.

Con la fft de la señal graficada podemos obtener el ancho


de banda el cual se encuentra entre 0 [hz] y los 37[hz]
0
0 5 10 15 20 25 30 35 40 45 50 aproximadamente, entonces la frecuencia de muestreo debe
Hz ser mayor al doble de la frecuencia de la señal en este caso 37
Fig1. Señal en el dominio de la frecuencia.
[hz] .
fm=2*f
Ts=1fm=>Ts=12*f=12*37
En la actividad cuatro se descarga una señal ECG de
physionet y se pide calcular el periodo muestreo mínimo para Ts=0.1351[s]
representar la señal ECG descargada. A continuación se
encuentra el código que nos permitirá establecer Entonces el periodo mínimo de muestreo es de 0.1351 [s].
aproximadamente el periodo de muestreo apoyado con la fig.2
Actividad cinco la señal ECG es contaminada por un ruido,
el siguiente código permite contaminar y graficar la señal
original y la contaminada por el ruido fig3

%--------------------------------------
%-------------------------------------- %Sesión 4
%Sesión 4 %Actividad 5
%--------------------------------------
Laboratorio de Procesamiento de Señales. Ingeniería Civil Biomédica, Universidad de Valparaíso, Chile, 18 de Mayo de 2010, pag. 3
load a04m% Se carga Señal ECG a04m.m N=length(d);
c=val; g = fm/N*(0:N/2);% acomodando el eje de
subplot(2,1,1); la frecuencia
plot(c);% se grafica señal sin ruido subplot(2,1,1)
title('Señal Original ECG'), plot(g, abs(d(1:N/2 + 1)))% se garfica
xlabel('Tiempo'), ylabel('Amplitud') solo la mitad.
x =500*randn(size(c));% se Genera un title('FFT Original Señal ECG '),
Ruido dandomico xlabel('Hz'), ylabel('Amplitud')
y=c+x;% Contaminamos la señal con el
ruido FFT Original Señal ECG
subplot(2,1,2); 15000

plot(y);% se grafica Señal contaminada


title('Señal Original ECG con Ruido'), 10000

Amplitud
xlabel('Tiempo'), ylabel('Amplitud')
5000

S eñ al O rig ina l E C G
60 0 0
0 5 10 15 20 25 30 35 40 45 50
Hz
40 0 4 FFT Señal ECG con ruido
x 10
6
Amplitud

20 0

0 4

Amplitud
-20 0 2
0 1 00 20 0 30 0 4 00 50 0 6 00 70 0 8 00 90 0 100 0
Tie m po
S eñ al O rig ina l E C G c on R u ido 0
2 00 0 0 5 10 15 20 25 30 35 40 45 50
Hz
1 00 0
Fig4. Espectro de frecuencia de la señal con ruido.
Amplitud

0
En búsqueda en la literatura al tener un ruido blanco
-1 00 0
característico, una de las alternativas que se propone es usar el
-2 00 0 filtro promedio móvil [4].
0 1 00 20 0 30 0 4 00 50 0 6 00 70 0 8 00 90 0 100 0 Actividad siete implementar la transforma discreta de
Tie m po
fourier y comparar el resultado con librería que trae Matlab
Fig3. Señal ECG a04m.m contaminada con ruido. para hacer esta operación y=fft(b). El siguiente código
compara el resultado de la fft implementada con la que trae
En la fig3 en la grafica superior se encuentra la señal ECG Matlab apoyado con la figura que crea el código fig.5
sin ruido y en al grafica inferior la señal ECG contaminada
con ruido. %--------------------------------------
Actividad seis definir un procedimiento para eliminar el %Sesión 4
ruido de la señal analizando el espectro de frecuencia. Con el %Actividad 7
siguiente código se aprecia el espectro de frecuencia de la %--------------------------------------
señal original y la contaminada con ruido fig4. t=0:0.01:10;
N=length(t);
%-------------------------------------- Ts=0.01;% Periodo de Muestreo
%Sesión 4 fm=1/Ts;% Frecuencia de mustreo
%Actividad 6 y=0.25+2*sin(2*pi*5*t)+sin(2*pi*12.5*t)
%-------------------------------------- +1.5*sin(2*pi*20*t)+0.5*sin(2*pi*35*t);
tic
b = fft(y);% FFT de la señal contaminada b = fft(y);%FFT de la libreria de matlab
fm=100;% frecuencia de muestreo toc
N=length(b); T1=toc% tiempo que demora en hacer la fft
f = fm/N*(0:N/2);% acomodando el eje de matlab con su libreria.
la frecuencia N1=length(b);
subplot(2,1,2); f1 = fm/N1*(0:N1/2);
plot(f, abs(b(1:N/2 + 1)))% se garfica
solo la mitad. tic
title('FFT Señal ECG con ruido'), % Se implemento la FFT que aparece en le
xlabel('Hz'), ylabel('Amplitud') Help de Matlab
a=val; for k=1:N
d = fft(a);%FFT de la señal original Y(k)=0;
Laboratorio de Procesamiento de Señales. Ingeniería Civil Biomédica, Universidad de Valparaíso, Chile, 18 de Mayo de 2010, pag. 4
for n=1:N demora Matlab con su algoritmo en desarrollar la FFT, T2
Y(k)=y(n)*exp(-i*2*pi*(k- representa lo que demorar Matlab con el algoritmo
1)*(n-1)/N)+ Y(k); implementado en desarrollar la FFT.
end
Elapsed time is 0.000410 seconds.
end
toc T1 =

T2=toc% tiempo que se demora en hacer la 4.4972e-004


fft con el algoritmo implementado
Elapsed time is 34.873767 seconds.
f = fm/N *(0:N/2);% se acondiciona le eje
de la frecuencia T2 =
subplot(2,1,1)
plot(f, abs(Y(1:N/2 + 1)))% se grafica 34.8738
solo la mitab.
title('FFT con almoritmo implementado'), Lo anterior fue copia del Comand Windows al terminar de
xlabel('Hz'), ylabel('Amplitud') ejecutar el código de la actividad 7.
subplot(2,1,2) Como se aprecia el Matlab se demora mucho menos que el
plot(f1, abs(b(1:N/2 + 1)))% garficamos algoritmo implementado.
la mitab.
title('FFT con Matlab'), xlabel('Hz'),
ylabel('Amplitud') V. CONCLUSIÓN

En la sesión cuatro se logro un dominio del sitio web


1000
FFT con alm oritm o implem entado physionet logrando descargar señales en formato tipo (.m),
utilizando PhysioBankATM el cual nos permite descargar la
señales para usar en Matlab.
Se logro un pleno manejo de la transformada de fourier,
Amplitud

500
aplicarla como implementarla; poniendo énfasis en la parte
gráfica en específico en los ejes que correspondan a lo que se
está graficando.
0
0 5 10 15 20 25 30 35 40 45 50 Otro objetivo que se logro fue interiorizar el análisis
Hz
espectral del una señal lo que permite trabajar en frecuencia,
FFT con Matlab
1000 esto puede ser muy favorable al trabajar con filtros los cuales
trabaja en base a frecuencias de corte.
Amplitud

500
VI. REFERENCIAS

0 [1] Software; MatLab, the lenguaje of technical computing


0 5 10 15 20 25 30 35 40 45 50
Hz 7.1.
[2] (2010). Transforma de Fourier. Recuperado el 16 de
Fig5. Comparación entre la FFT implementada y la FFT que trae Matlab en
su librería.
mayo 2010. Disponible en:
http://es.wikipedia.org/wiki/Transformada_de_Fourier_discr
El resultado obtenido gráficamente es idéntico la FFT eta
implementada entrega el mismo resultado que la FFT que [3] (2010). Análisis espectral. Recuperado el 16 de mayo de
posee Matlab, pero los diferencia es notoria en el tiempo que 2010. Disponible en:
tarda cada una de ellas, en el código se utilizo tic y toc estos http://es.wikipedia.org/wiki/Espectro_de_frecuencias
comando nos permiten obtener el tiempo en segundo que tarda [4] UTN. FRSN. Señales y Sistemas Clase14: Filtro promedio
un proceso, se ocupa de la siguiente maneta: móvil. Recuperado el 16 de mayo de 2010 .Disponible en:
tic www.frsn.utn.edu.ar/tecnicas3/practicos/td3tp6_teoria.pdf .
operations
toc

en toc se guarda el tiempo en segundo que se demoro en hacer


el proceso, en el caso del código T1 representa el tiempo que

Das könnte Ihnen auch gefallen