Realización de Matlab de muestreo de frecuencia de base 2 FF

Debut

Por que escribir

De un guión con baches y baches, finalmente se ejecuta con éxito. Alguna experiencia y algunos pequeños problemas desatendidos son realmente fatales. No puedo encontrar a nadie para decir. . . Estoy interesado en convertirme en programador. Actualmente estoy estudiando python \ matlab \ c en mi tercer año. Mi especialización es ciencia y tecnología de la información electrónica, y mi curso profesional se dedica a la comunicación, por lo que matlab se puede usar con más frecuencia. En el futuro, también puede compartir la experiencia en el proceso de desarrollo de FPGA, ¡espere y verá!

El primer código compartido

Al aprender la Transformada Rápida de Fourier, el algoritmo FFT es confuso e ininteligible, y es temporalmente difícil de aceptar. A través del estudio del programa para comprender, el programa resume su ley iterativa, obtiene su esencia; el
código de matlab FFT de muestreo de frecuencia se da a continuación. ps: fft es una función interna en matlab, la ayuda no te lo dice

function y=DIF_FFT(x)
%输入自然序,输出倒位序
m=ceil(log2(length(x)));
N=2^m;
if length(x)<N
    x=[x,zeros(1,N-length(x))];
end
for mm=1:m  %级数控制
    Nmr=2^(m-mm); %与时域抽取不同,指数部分为:总级数-当前级
    u=1;
    N=exp(-i*2*pi/(2*Nmr));
    for j=1:Nmr %控制不同的叠加系数
     for k=j :2*Nmr:N %控制相同的系数有几次,每隔2*Nmr出现一个相同系数
            kp=k+Nmr;
            t=(x(k)-x(kp))*u;%一定要保留一个中间变量,否则修改xk与xkp
            %蝶形的递推由上级的两个值确定
            x(k)=x(k)+x(kp);
            x(kp)=t;
             end;
        u=u*WN;
    end
    end
nxd=bin2dec(fliplr(dec2bin([1:N]-1,m)))+1;  
y=x(nxd);%将输出次序修正为自然序

# 简单地结束语
写文档是门手艺,我在排版上有点差,第一次也就不折腾了,码农嘛,算法和思想才关键。
留个QQ吧,寻找码农共同进修啊
My:2991447145

Supongo que te gusta

Origin blog.csdn.net/qq_44801767/article/details/102888027
Recomendado
Clasificación