如何在matlab中实现ifft?

时间:2015-07-16 08:52:09

标签: matlab fft ifft

我在理解数字ifft的概念时遇到了很大的问题。

考虑空间域中的函数,例如f(x)=-2/pi*Ln(abs(x)) x介于-LxLx之间。该函数的傅立叶变换是F(w)=2/abs(w)

我想在Matlab中使用ifft命令来确定这两者在数值上是否相同。如果您运行下面的简单代码,您将看到困扰我的区别:

  clc

  clear all

  Lx=0.0005;

  N=pow2(10);

  dx=2*Lx/(N-1);

  w=pi/(N*dx)*linspace(-N/2,N/2,N);

  Hw=2./abs(w);

  hx=1/dx*abs(fftshift(ifft(Hw)));

  x=linspace(-Lx,Lx,N);

  hxexact=-2/pi.*log(abs(x));

  plot(x,hx,x,hxexact,'r')

  legend('ifft','exact')

这是输出:

如果有人能帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

你似乎对你的函数有一些关于FFT的困惑,你可能一直在寻找的结果是:

w

这是你的功能的fft 2./abs(w)是正面的!

这是一般情况下的FFT:

This is the FFT in the general case

如果您使用MATLAB的fft函数而不是使用自己的SELECT DISTINCT Anvendelseskoder.[Usage Code] AS [Byggeanvendelseskode], Anvendelseskoder.[Usage Code Value] AS [Byggeanvendelse], HeleDanmark_DAWA.KVHx FROM Anvendelseskoder RIGHT JOIN HeleDanmark_DAWA ON Anvendelseskoder.KVHx = HeleDanmark_DAWA.KVHx WHERE HeleDanmark_DAWA.postnr=6720 AND Anvendelseskoder.[Usage Code]>0 ,您将看到ifft和原始函数对齐。