Sei sulla pagina 1di 4

8.

Realice un resumen sobre uno de los métodos para la estimación de las Fast
Fourier Transform. Implemente el algoritmo en una función de Matlab.

Al examinar las ecuaciones de la DFT e IDFT:


𝑁−1

𝑋(𝑘) = ∑ 𝑥(𝑛)𝑊𝑁𝐾𝑛 , 𝑝𝑎𝑟𝑎 0 ≤ 𝑘 ≤ 𝑁 − 1 ( 1)


𝑛=0

𝑁−1
1
𝑥(𝑛) = ∑ 𝑋(𝑘)𝑊𝑁−𝐾𝑛 , 𝑝𝑎𝑟𝑎 0 ≤ 𝑛 ≤ 𝑁 − 1 ( 2)
𝑁
𝑘=0

Vemos que, para cada valor de k, calcular 𝑋𝑘 para 𝑘 = 0,1, … , 𝑁 − 1 requiere 𝑁 2


multiplicaciones complejas.

Debido a que la evaluación directa de (1) o (2) requiere 𝑁 2 multiplicaciones, esto puede
ocasionar muchísimos cálculos si N es grande.

Algoritmo de Radix-2 con diezmado en el tiempo

La idea básica de la aproximación por decimación en el tiempo es subdividir el intervalo


de tiempo en intervalos que tengan menos puntos, Se ilustra esto mostrando primero
que el cálculo de 𝑋𝑘 puede dividirse en dos partes.

Dividiendo la sumatoria de la ecuación (1) en dos partes, una con 𝑥(𝑛) de índice para y
otra de índice impar, obteniendo:
𝑁−1

𝑋(𝑘) = ∑ 𝑥(𝑛)𝑊𝑁𝐾𝑛
𝑛=0

𝑁 𝑁
−1 −1
2 2
(2𝑛+1)𝑘
= ∑ 𝑥(2𝑛)𝑊𝑁2𝑛𝑘 + ∑ 𝑥(2𝑛 + 1)𝑊𝑁
𝑛=0 𝑛=0

𝑁 𝑁
−1 −1
2 2

𝑋(𝑘) = ∑ 𝑥(2𝑛)𝑊𝑁2𝑛𝑘 + 𝑊𝑁𝑘 ∑ 𝑥(2𝑛 + 1)𝑊𝑁2𝑛𝑘 ( 3)


𝑛=0 𝑛=0

Para 𝑁 par tenemos:


𝑛𝑘
𝑊𝑁2𝑛𝑘 = 𝑒 −𝑗(2𝜋/𝑁)2𝑛𝑘 = 𝑒 −𝑗[2𝜋/(𝑁/2)]𝑛𝑘 = 𝑊𝑁/2 ( 4)
Reemplazando la ecuación (4) en (3)
𝑁 𝑁
−1 −1
2 2
𝑛𝑘
𝑋(𝑘) = ∑ 𝑥(2𝑛)𝑊𝑁/2 + 𝑊𝑁𝑘 ∑ 𝑥(2𝑛 + 1)𝑊𝑁𝑛𝑘 ( 5)
𝑛=0 𝑛=0

Reescribiendo la ecuación (5):

𝑋(𝑘) = 𝑋𝑒 (𝑘) + 𝑊𝑁𝑘 𝑋𝑜 (𝑘) ( 6)

Donde, 𝑋𝑒 (𝑘) y 𝑋𝑜 (𝑘) son las DFT de longitud N/2 de las muestras indexadas pares e
impares correspondientes, es decir:
𝑁 𝑁
−1 −1
2 2
𝑛𝑘 𝑛𝑘
𝑋𝑒 (𝑘) = ∑ 𝑥(2𝑛)𝑊𝑁/2 = ∑ 𝑋𝑒 (𝑛)𝑊𝑁/2
𝑛=0 𝑛=0

𝑁 𝑁
−1 −1
2 2

𝑋𝑜 (𝑘) = ∑ 𝑥(2𝑛)𝑊𝑁𝑛𝑘 = ∑ 𝑥𝑜 (𝑛)𝑊𝑁/2


𝑛𝑘

𝑛=0 2 𝑛=0

Algoritmo en una función de Matlab


function fft_radix2
% Algoritmo de Radix-2 con diezmación en el tiempo
load sig7
N= length(sig7)
x = x(bitrevorder(1:N));%comando para inversión de bit
q = round(log(N)/log(2));
for j = 1:q
m = 2^(j-1);
d = exp(-pi*i/m).^(0:m-1);
for k = 1:2^(q-j)
s = 2*(k-1)*m+1; % Índice de comienzo
e = 2*k*m; % índice final
r = s + (e-s+1)/2; % índice medio
y_1 = x(s:r-1);
y_2 = x(r:e);
z = d .* y_2;
y = [y_1 + z, y_1 - z];
x(s:e) = y;
end
end

8.1. Aplicar el algoritmo a la señal sig1.


8.2. Estimar el espectro de la señal aplicando la función de Matlab fft.

8.3. Compare los valores espectrales obtenidos respecto a los que se obtienen con la
Función de Matlab fft.

Potrebbero piacerti anche