请教高手:如何用Matlab自己编写基2的fft函数

来源:百度知道 编辑:UC知道 时间:2024/05/10 05:07:51
按时间抽取以及按频率抽取
即不使用matlab提供的fft函数,自己独立编写一个

按时间抽取 我有

function ret_val = fft1(vector)
%======================================
%ret_val 为fft变换后返回的频域序列
%N 为点数
%vector 为变换前的序列
%======================================
vector_size = size(vector);
N = vector_size(2);
c = zeros(1,N);
%
%变址运算
%
j1 = 0;
for i = 1 : N
if i < j1 + 1
tmp = vector(j1 + 1);
vector(j1 + 1) = vector(i);
vector(i) =tmp;
end
k = N / 2;
while k <= j1
j1 = j1 - k;
k = k / 2;
end
j1 = j1 + k;
end

%
%蝶形运算
%
%%%%%%%计算 N 的
dig = 0;
k = N;
while k > 1
dig = dig + 1;
k = k / 2;
end
%%%%%%
% m 为级; dist 为蝶形运两点的距离; n 为蝶形运算组数
%
n = N / 2;
for m = 1 : dig
dist = 2 ^ (m - 1);
idx = 1;
for i = 1 : n
idx1 = idx;
for j1 = 1 : N / (2 *