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

📄 myfft.m

📁 包含DVB-T标准中的内交织
💻 M
字号:
<PRE class=m name="code">%FFT算法   function x=myfft(a,N)                         %编写fft函数,输入变量为数组a,数组长度N,N须为2^m,m为正整数                                                 %输出为经fft变换后的x   m=log2(N);                                     %m进位   x=a;                                           %把输入数组赋給x      %码位倒置   x1=(-1)*ones(size(x));                    %初始化x1,用于储存数据,并用-1做标记   for jj=1:length(x);                       %逐个扫描x       if(x1(jj)<0)                          %如果x1中的数未被修改,则进行计算                                             %(由于一次计算,对x中数进行交换,有时可以确定x1中两个数,用来减少计算量)        d=0;                                  %d用来计算倒序后的数       mm=m;pp=jj-1;                         %用mm记录m,pp记录jj-1        while(mm>0)                           %mm进行逆序循环,从m到1       ww=mod(pp,2);pp=floor(pp/2);          %计算pp mod2的余数ww,(即二进制数),以及除数pp,用于下一次计算       if (ww~=0&mm~=1)           d=d+2^(mm-1);                     %将jj化为二进制数,并进行倒序,再还原成10进制数       end       if (ww~=0&mm==1)           d=d+1;       end       mm=mm-1;       end       x1(jj)=x(d+1);                       %将x中相应坐标数进行调换,储存在x1中       x1(d+1)=x(jj);       end   end   x=x1;clear x1;                          %将调换后的数赋予x,清除x1       %组装,蝶形计算   for jj=1:m                              %组装次数循环,总共m次组装       y=zeros(size(x));                   %初始化y,用于储存数据        h=2^jj;                             %每次组装的旋转因子下标,(WN)^k,这里N=h;       bb=2^(jj-1);                        %旋转因子上标最大值,即(WN)^k,(k=1,..,bb-1)                                           %bb还表示每次组装的两个数据间隔        ff=2^(m-jj);                        %分组数       gg=N/ff;                            %每组个数        for kk=1:ff                         %分组数循环,对每组内部进行组装       for ii=0:bb-1;                      %每组内进行组装,ii表征两组装数据中起始数据的下标,为(kk-1)*gg+ii+1                                           %ii还表征对应的旋转因子为(WN)^ii,N=h               WW=exp((-j*2*pi*ii/h));     %计算旋转因子               y((kk-1)*gg+ii+1)=x((kk-1)*gg+ii+1)+x((kk-1)*gg+ii+bb+1)*WW;                    y((kk-1)*gg+ii+1+bb)=x((kk-1)*gg+ii+1)-x((kk-1)*gg+ii+bb+1)*WW;    %组装,蝶形运算        end       end       x=y;                                                                       %将该次组装后的结果赋予x,以进行下一次组装    end   clear y;</PRE>  <SCRIPT src="/inc/gg_read2.js"></SCRIPT>  

⌨️ 快捷键说明

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