function X = FFTnlong(x,L)
%FFTnlong 计算序列x的L点DFT的基2FFT算法
%输入值 离散序列x 要计算的DFT长度 L必须是2^n
%输出值 序列x的L点DFT
x = [x zeros(1,L-length(x))]; %补零
X = zeros(1,L);
xe = zeros(1,L/2);
xo = zeros(1,L/2);
for k = 1:L/2
xe(k) = x(2*k-1); %偶序列
xo(k) = x(2*k); %奇序列
end
if L == 2 %若化成最小蝶形则直接算出其2点DFT
X(1) = xe(1) + xo(1);
X(2) = xe(1) - xo(1);
else
XE1 = FFTnlong(xe,L/2);
XE2 = FFTnlong(xo,L/2);
W = exp(-i*2*pi/L);
XE11 = [XE1 XE1];
XE22 = [XE2 XE2];
W1 = zeros(1,L);
for k = 1:L
W1(k) = W^(k-1);
end
X = XE11 + XE22.*W1;
end
end
![](https://i-blog.csdnimg.cn/blog_migrate/b34686666a60e44764ac3925bb34fe58.png)
![](https://i-blog.csdnimg.cn/blog_migrate/67c22679c2c092d18801d25f69b494ae.png)