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

📄 myditfft.m

📁 matlab fft 傅立叶变换 matalb语言
💻 M
字号:
function y=myditfft(x)
%本程序对输入序列实现DIT-FFT基2算法,点数取大于等于长度的2的幂次
%------------------------------------
%             myditfft.c
%------------------------------------
m=nextpow2(x);                                %求的x长度对应的2的最低幂次m
N=2^m;
if length(x)<N
    x=[x,zeros(1,N-length(x))];               %若的长度不是2的幂,补0到2的整数幂
end
nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;    %求1:2^m数列的倒序
y=x(nxd);                                     %将倒序排列作为的初始值
for mm=1:m                                    %将DFT做m次基2分解,从左到右,对每次分解作DFT运算
    Nmr=2^mm;
    u=1;                                      %旋转因子u初始化
    WN=exp(-i*2*pi/Nmr);                      %本次分解的基本DFT因子WN=exp(-i*2*pi/Nmr)
      for j=1:Nmr/2                           %本次跨越间隔内的各次碟形运算
          for k=j:Nmr:N                       %本次碟形运算的跨越间隔为Nmr=2^mm
              kp=k+Nmr/2;                     %确定碟形运算的对应单元下标
              t=y(kp)*u;                      %碟形运算的乘积项
              y(kp)=y(k)-t;                   %碟形运算的加法项
              y(k)=y(k)+t;
          end
          u=u*WN;                             %修改旋转因子,多乘一个基本DFT因子WN
      end
  end

⌨️ 快捷键说明

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