我在理解数字ifft的概念时遇到了很大的问题。
考虑空间域中的函数,例如f(x)=-2/pi*Ln(abs(x))
x
介于-Lx
和Lx
之间。该函数的傅立叶变换是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')
这是输出:
如果有人能帮助我,我将不胜感激。
答案 0 :(得分:0)
你似乎对你的函数有一些关于FFT的困惑,你可能一直在寻找的结果是:
w
这是你的功能的fft 2./abs(w)
是正面的!
这是一般情况下的FFT:
如果您使用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和原始函数对齐。