⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 n_2nfft.m

📁 该程序为matlab进行傅立叶变换的快书算法FFT
💻 M
字号:
%用一个N点的FFT计算一个2N点的实序列的DFT
clear    %必要的清除变量
N=32;
n0=0:1:31;
n=0:1:63;  %2N=64
x=n.^2;
%抽偶序列
for i=0:1:(N-1)
    x1(i+1)=x(2*i+1);
end
%抽奇序列
for i=0:1:(N-1)
    x2(i+1)=x(2*i+2);
end
%FFT
Xk1=fft(x1,N);
Xk2=fft(x2,N);
%
Yk=Xk1+j*Xk2;
Ykr=real(Yk);
Yki=imag(Yk);
Yk=Ykr+j*Yki;
%%%建立X1(k)、Yr(k)和X2(k)、Yi(k)之间的关系
Xk1(0+1)=[Ykr(1)+Ykr(1)]/2+j*[Yki(1)-Yki(1)]/2;
Xk2(0+1)=[Yki(1)+Yki(1)]/2-j*[Ykr(1)-Ykr(1)]/2;
for k=1:1:N-1
    Xk1(k+1)=[Ykr(k+1)+Ykr((N-k)+1)]/2+j*[Yki(k+1)-Yki((N-k)+1)]/2;    %%%%??疑问:若按课件上的关系Ykr(N-k)和Yki(N-k)
    Xk2(k+1)=[Yki(k+1)+Yki((N-k)+1)]/2-j*[Ykr(k+1)-Ykr((N-k)+1)]/2;    %%%%??对应k+1的话,则必然不对?但是前面又必然要加。
end

%%%%
for k=0:1:(N-1)
    Xk(k+1)=Xk1(k+1)+Xk2(k+1)*exp(-j*pi*k/N);     %前半部分
    Xk(k+1+N)=Xk1(k+1)-Xk2(k+1)*exp(-j*pi*k/N);   %后半部分
end
%%%%将前后两部分组合起来得到2N点的FFT
Xk;      %%%%???好象不用组合了?
%%%
subplot(2,1,1)
plot(n,abs(Xk))
title('幅频特性')
%%%验证
Xk=fft(x,2*N);
subplot(2,1,2)
plot(n,abs(Xk))
title('检验')    %%%???结果不吻合

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -