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

📄 y1fft.m

📁 自己手写的图像的FFT变换和DCT变换的MATLAB代码
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%一维的傅立叶变换的主函数,方便于二维傅立叶变换,以及DCT变换,以及反傅立叶变换调用使用%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f=Y1FFT(x,N)
f=zeros(1,N);
for i=1:N
    f(i)=x(i);
end;
c=(-1)^(0.5);
r=log2(N);
for i=1:N/2
    w(i)=exp(-pi*2*i/N);
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%进行一维的快速傅立叶变换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
j=0;    
    for i=0:1:N-1
        if (i<j)
            temp=f(j+1);
            f(j+1)=f(i+1);
            f(i+1)=temp;
        end;
        k=N/2;
        while k<(j+1)
            j=j-k;
            k=k/2;
        end;
        j=j+k;
    end;
    for i=1:1:r
        k=1;
        j=1;        
        for j=1:1:(i-1)
            k=k*2;
        end;
% %     for k=0:r-1
% %         for j=0:2^k-1
% %             bfsize=2^(r-k);
% %             for m=0:bfsize/2-1
% %                 p=j*bfsize;
% %                 temp(m+p+1)=f(m+p+1)+f(m+p+bfsize/2+1);
% %                temp(m+p+1+bfsize/2)=(f(m+p+1)-f(m+1+p+bfsize/2))*w(2^k*(m+1));
% %             end
% %         end
% %         tem=f;
% %         f=temp;
% %         temp=tem;
% %     end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%        对变换后的傅立叶的序列进行重新排序   %%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      W=(-c*2*pi)/2/k;
        j=0;
        while j<k
            m=j;
            while m<N
                l=m+k;
                temp=f(l+1)*exp(W*j);
                f(l+1)=f(m+1)-temp;
                f(m+1)=f(m+1)+temp;
                m=m+k*2;
            end;
            j=j+1;
        end;
    end;
end

⌨️ 快捷键说明

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