64点fft实现128点fft的算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编写64点FFT实现的函数

function X = myditfft64(x)

%按时间抽选的基2-FFT算法

%输入参数:

%x-离散时间信号

%输出参数:

%X-序列x的N点DFT(N是序列长度,必须是2的整数次幂)

N = 64; % 序列长度

if length(x) < N

x = [x,zeros(1,N-length(x))]; % 若x的长度不是2的整数次幂,则补零直到长度为N

end

nxd = bin2dec(fliplr(dec2bin([1:N]-1,6))) + 1; %求1:N序列序号的倒位序

X = x(nxd); %调整x输入顺序后的序列,并作为X的初始化

WN = exp(-1i*2*pi/N); %旋转因子

for L = 1:6

B = 2^(L-1); %第L级中,每个蝶形的两个输入数据相距B个点,共有B个不同的旋转因子

for J = 0 : B-1 %第L级中不同的旋转因子

p = J*2^(6-L); %旋转因子的指数

WNp = WN^p; %旋转因子的值

for k = J+1 : 2^L : N %蝶形运算

t = X(k+B)*WNp;

X(k+B) = X(k)-t;

X(k) = X(k)+t;

end

end

end

//-------------------------------------------------------------------------------------- 编写用64点FFT实现128点FFT

function y =myditfft64128(x)

N=128;

if length(x) < N

x = [x,zeros(1,N-length(x))];%若x的长度不是2的整数次幂,则补零直到长度为N

end

y1=myditfft64(x(1:2:128));%计算偶数组的64点fft

y2=myditfft64(x(2:2:128));%计算奇数组的8点fft

wn=exp(-j*2*pi/128);

y(1:64)=y1+y2.*(wn.^[0:63]);%计算前64个点

y(65:128)=y1-y2.*(wn.^[0:63]);%计算后64个点

相关文档
最新文档