matlab中的锯形IFFT

时间:2015-08-09 20:13:01

标签: matlab fft ifft

我对一个应该是平滑的函数的逆傅里叶变换有一个问题,但实际上它变成了锯形。傅里叶域中的函数是:f(m,n)= im(heavyisede(m)+ heavyiside(-m))/(m ^ 2 + n ^ 2)。将ifft2应用于此函数必须产生平滑函数,如F(x,y)= x /(x ^ 2 + y ^ 2)。但是,这样做会导致x方向的锯齿形功能。

我很感激这方面的任何建议

以下是代码:

clc
clear all

N=pow2(8);
Lx=0.01;
XX=linspace(-Lx,Lx,N);
[X,Y]=meshgrid(XX,XX);
dx=XX(2)-XX(1);
% the grid in fourier domain is chosen in such a way to avoid the
% singularity at the origin
mm=2*pi/N/dx*linspace(-N/2,N/2,N);
[m,n]=meshgrid(mm);
fmn= i *m.*(heaviside(m)+heaviside(-m))./(m.^2+n.^2);
% the numerical ifft2 of the spectrum
fxy=1/dx^2*fftshift(ifft2(ifftshift(fmn)));
% the analytical ifft2 of the spectrum
Fxy=X./(X.^2+Y.^2);

subplot(2,1,1)
mesh(X,Y,abs(fxy))
title('the output by ifft2')
subplot(2,1,2)
mesh(X,Y,abs(Fxy))
title('the expected (analytical) inverse transform')

0 个答案:

没有答案