next up previous
Siguiente: Más gráficas Superior: Comenzando con PDL: un Anterior: Operaciones con matrices

Análisis de Fourier

Como ejemplo ilustrativo adicional vamos a realizar un análisis de Fourier de una señal y filtrarla.

Primero crearemos la señal a procesar y la dibujaremos tal como aparece en la Fig. 4.

perldl> $x=zeroes(1000)->xlinvals(-20,20)
perldl> $y=sin($x/0.1)+cos($x/0.5)
perldl> line($x,$y)

Figura: Señal compuesta de un seno más un coseno
\epsfig{file=senal.ps, width=.7\textwidth,angle=270}

El comando para realizar transformadas de Fourier es el fft, pero antes de utilizarlo hay que cargar el módulo PDL::FFT. Por otro lado el comando fft acepta como argumentos la parte real de la señal y su imaginaria y las modifica en el sitio, es decir, los ``piddles'' de salida son los mismos que los de entrada pero modificados. Para conservar la señal original haremos primero una copia de ella como parte real y parte imaginaria.

perldl> $ry=$y->copy
perldl> $iy=zeroes(1000)

Ahora realizamos la transformada de Fourier

perldl> use PDL::FFT
perldl> fft($ry,$iy)

Podemos ahora dibujar el espectro de potencias de dicha transformada

perldl> line($ry**2+$iy**2)

y obtenemos la Fig. 5

Creemos un filtro de forma que anulemos las frecuencias de una de las sinusoides tal y como aparece en la Fig. 5.

perldl> $filtro=sequence(1000)
perldl> $filtro=($filtro<40)+($filtro>960)

Figura 5: Transformada de Fourier y filtro aplicado
\epsfig{file=fft.ps, width=.7\textwidth,angle=270}

Multiplicando el filtro por las dos componentes de la transformada obtenemos la señal filtrada

perldl> $ry=$ry*$filtro
perldl> $iy=$iy*$filtro
perldl> line($ry**2+$iy**2)

Deshaciendo ahora la transformada y dibujando el resultado obtenemos la señal filtrada de la Fig. 6.

perldl> ifft($ry,$iy)
perldl> line($x,$ry)

Figura: Señal filtrada
\epsfig{file=filtra.ps, width=.7\textwidth,angle=270}


next up previous
Siguiente: Más gráficas Superior: Comenzando con PDL: un Anterior: Operaciones con matrices

Download this document: [src.tar.gz][ps.gz][html.tar.gz][dvi.gz]

Congreso HispaLinux 2000