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

📄 fft_manual.m

📁 A matlab fft implementation using matlab itself
💻 M
字号:

function [X_real,X_imag]=FFT_manual(x_real,x_imag,dft_size)
X_real=zeros(1,dft_size);
X_imag=zeros(1,dft_size);
number_of_stage=log2(dft_size);
for stage=1:number_of_stage,
    for i=1:power(2,(stage-1)),
        for j=1:power(2,(number_of_stage-stage)),
            n=power(2,(number_of_stage-stage+1))*(i-1)+j;
            m=power(2,(number_of_stage-stage))+n;
            r=power(2,(stage-1))*(j-1);
            a_real=x_real(n);
            a_imag=x_imag(n);
            b_real=x_real(m);
            b_imag=x_imag(m);
            c_real=cos((2*pi*r)/dft_size);
            c_imag=-sin((2*pi*r)/dft_size);
            if stage<number_of_stage
                x_real(n)=a_real+b_real;
                x_imag(n)=a_imag+b_imag;
                x_real(m)=(a_real-b_real)*c_real-(a_imag-b_imag)*c_imag;
                x_imag(m)=(a_imag-b_imag)*c_real+(a_real-b_real)*c_imag;
            else
                x_real(n)=a_real+b_real;
                x_imag(n)=a_imag+b_imag;
                x_real(m)=a_real-b_real;
                x_imag(m)=a_imag-b_imag;
            end
        end
    end
end
number_of_bit=log2(dft_size);
for k=1:dft_size,
    index=dec2bin((k-1),number_of_bit);
    for position_of_bit=1:floor(number_of_bit/2);
        bit=index(position_of_bit);
        index(position_of_bit)=index(number_of_bit-position_of_bit+1);
        index(number_of_bit-position_of_bit+1)=bit;
    end
    X_real(bin2dec(index)+1)=x_real(k);
    X_imag(bin2dec(index)+1)=x_imag(k);
end
            

⌨️ 快捷键说明

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