• 大小: 8KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

傅里叶反变换的原理详述,自编函数可以调用,也可以读取程序,理解算法原理

资源截图

代码片段和文件信息

function [zxy] = inversefouriertransform2(Czvarargin)
%INVERSEFOURIERTRANSFORM2   Performs the Real 2D Inverse Fourier Transform.
%   [ZXY] = INVERSEFOURIERTRANSFORM2(RCICdFxdFy) Gives the real 2D 
%   field Z(XY) from the components of the complex 2D Fourier transform 
%             Cz(FxFy) = RC(FxFy) + i*IC(FxFy) = complex(RCIC)
%   taken at dFxdFy sampling frequency interval via IFFT2. The spatial 2D 
%   frequencies (FxFy) must have the origin at the center and Fy must 
%   increase upwards contrary to the row index.
%
%   [ZXY] = INVERSEFOURIERTRANSFORM2(CzdFxdFy) does the same thing.
%
%   [ZXY] = INVERSEFOURIERTRANSFORM2(CzdFxdFy‘ifft‘) does the same 
%   thing but via IFFT. Only for academic purpose.
%
%   [ZXY] = INVERSEFOURIERTRANSFORM2(CzdFxdFy‘exp‘) does the same 
%   thing but via complex exponentials. Only for academic purpose. Not so 
%   fast as IFFT or IFFT2.
%
%   Inputs:                                  units:    Size:  
%   RC  - Real components                    [u*v*w]   Ny times Nx
%   IC  - Imaginary components               [u*v*w]   Ny times Nx
%   (Cz - Complex transform                  [u*v*w]   Ny times Nx)
%   dFx - Sampling frequency interval at Fx  [cycle/v] Scalar
%   dFy - Sampling frequency interval at Fy  [cycle/w] Scalar
%
%   Outputs:
%   Z   - 2D real field                      [u]       Ny times Nx
%   X   - x grid origin left-lower corner    [v]       Ny times Nx
%   Y   - y grid origin left-lower corner    [w]       Ny times Nx
%   
%   Note: the origin of (XY) is at the (Ny1) element (left-bottom 
%   corner) and of (FxFy) at the (Ny-floor(Ny/2)floor(Nx/2)+1) element 
%   (center).
%
%   Note: the components at null frequencies are:
%      RC(Ny-floor(Ny/2)floor(Nx/2)+1) = mean(Z(:))*(Tx*Ty);  
%      IC(Ny-floor(Ny/2)floor(Nx/2)+1) = 0;
%   where Tx=Nx*dX and Ty=Ny*dY are the total sampling interval at x and y.
%
%   Note: the Fourier spatial frequencies (cycle/v cycle/w) must be 
%      nx = -floor(Nx/2):(Nx-1)/2;  % centralized x index
%      ny = -floor(Ny/2):(Ny-1)/2;  % centralized y index
%      ny = fliplr(ny);             % fy increase upwards
%      Fx = nx/(Nx*dX); Fy = ny/(Ny*dY);
%      [FxFy] = meshgrid(FxFy);
%
%   Note: if  dFx = 1              =>  normalized space at x (Bloomfield)
%         if  dFy = 1              =>  normalized space at y (Bloomfield)
%         if  dFx = 1/Nx or empty  =>  normalized frequency at x (MATLAB)
%         if  dFy = 1/Ny or empty  =>  normalized frequency at y (MATLAB)
%
%   Example:
%      Nx = 100; Ny = 200; dX = 120; dY = dX; 
%      fx1 = 0.0005; fx2 = -0.0010;
%      fy1 = 0.0012; fy2 =  0.0017;
%      x = (0:Nx-1)*dX; y  = fliplr(0:Ny-1)*dY; [xy] = meshgrid(xy); 
%      z = 20*sin(2*pi*(fx1*x + fy1*y)) + 30*cos(2*pi*(fx2*x + fy2*y));
%      z = z + rand(size(x));
%      z = z-mean(z(:));
%      [rcicFxFy] = fouriertransform2(zdXdY); 
%      [

评论

共有 条评论