傅里叶原理:
快速傅里叶原理:
快速傅里叶-算法实现原理:
代码实现:
代码参考网上资料,出处不详,侵权删。
%myfft(A,M)有两个形参,A为要进行快速傅里叶变换的序列,M为序列长度对2的对数,
%即如果序列A[n]的长度为8,则M=3
% A=[1,2,3,4,5,6,7,8];
% M=3;
function [A] = myfft(A,M)
N=2^M; %序列的长度为N
LH=N/2; %序列长度的一半
N1=N-2;
J=LH
for I=1:1:N1%将输入序列A[n]按运算流程图第一列的顺序排好
if I<J
temp=A(I+1);
A(I+1)=A(J+1);
A(J+1)=temp;
%temp
end
A
K=LH;
while J>=K
J=J-K;
K=K/2;
end
J=J+K;
%I
%J
end
for L=1:1:M %L表示序列分解层次,此次分解有M-L个子序列
B=2^(L-1);
% B=1,2,4 当前第几层
for S=0:B-1 %执行第S个蝶形运算,每个子序列共有B个蝶形运算
p=S*2^(M-L); %旋转因子的上标,即此时旋转因子为 相当于u
for k=S:2^L:N-1%执行各个子序列中的第S个蝶形运算,有M-L个子序列
% k有几组
%蝶形运算
temp=A(k+1)+A(k+B+1)*exp(-1i*2*pi*p/N);
% B=地址(每次+2^(L-1))
A(k+B+1)=A(k+1)-A(k+B+1)*exp(-1i*2*pi*p/N);%减法(n/2~n)
A(k+1)=temp; %加法(0~n/2)
temp
A
end
end
end
1i
end
本文为原创。
转载请注明出处。