注意输入,既然用到FFT,自然知道输入的点数必须是2的N次方。
Matlab Code
参考了另一位博主的代码,但是找不到原文了,抱歉…
function Output = myfft(x)
N = length(x);
Output = x;
%% Redar's algorithm: 0 1 2 3 -> 0 2 1 3
N2 = N / 2;
j = N2;
for i = 1:N-2
% swap x[i] and x[j]
if i < j
Temp = Output(i+1);
Output(i+1) = Output(j+1);
Output(j+1) = Temp;
end
% find the next x[j]
k = N2;
while j >= k
j = j - k;
k = k / 2;
end
j = j + k;
end
%% Compute X[n]
Wmn = exp