📄 exfft.m
字号:
function FD = exfft(TD,r)
%----------------------------------
% Name: exfft
% Param:
% TD -时域序列
% r -2的幂数,即迭代次数
% Return:
% FD -频域序列
% Desc: 对给定的序列进行快速傅立叶变换
% By:
%-----------------------------------
count = 2^r; % 计算变换点数
% 分别用来保存蝶形运算的输入和输出
X1 = zeros(1,2^r);
X2 = zeros(1,2^r);
% 计算加权系数
W = zeros(1,count/2);
for j=1:count/2
angle = j*3.1415926*2/count;
W(1,j)=cos(angle)-i*sin(angle);
end
% 采用蝶形算法进行快速傅立叶变换
X1=TD;
for k=1:r % 迭代次数
for j=1:(2^k) % 该次迭代有 2*k 个部分
bfSize = 2^(r-k); % 每部分的点数
for l=1:bfSize/2
p=(j-1)*bfSize;
X2(1,l+p) = X1(1,l+p) + X1(1,l+p+bfSize/2);
X2(1,l+p+bfSize/2) = (X1(1,l+p) - X1(1,l+p+bfSize/2))*W(1,l*(2^k));
end
end
% 将结果X2作为下一次迭代的输入
X=X1;
X1=X2;
X2=X;
end
% 重新排序
FD=bitrevorder(X2)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -