在David Voelz撰写的《计算傅立叶光学,Matlab教程》一书中,写道,在调用fftshift
或k之前,需要先调用fft
,但是在MATLAB文档fftshift
中,只写了该命令
在文档中没有提到在调用fft
之前应先调用此命令,并且我看到了一些示例,这些示例在不事先调用fft
的情况下调用fftshift
。
我的问题是:是否需要在调用fftshift
或fft
之前调用ifft
?
如果不需要在调用fftshift
之前调用fft
,而仅在调用fft
之后才调用ifftshift
,那么我们何时应该(如果有的话)使用fft
命令来计算数据集的ojit_code呢?
最佳答案
为了节省计算时间,matlab fft
仅计算频谱的一半(如果采样数为奇数,则为正频率和零频率)。
然后,将频谱的后半部分(即前半部分的复共轭)添加到此向量的末尾。
因此,在fft
之后得到的是以下向量:
0 1 2 3 ... Fs/2 -Fs/2 ... -3 -2 -1
<----------------> <------------------>
positive freq negative freq
其中Fs
是频率样本。现在,
fftshift
所做的只是在向量的开始处移动负频点(频谱的第二部分),这样您就可以显示一个从-Fs/2
到+Fs/2
结束的不错的频谱。移位后的向量变为:
-Fs/2 ... -3 -2 -1 0 1 2 3 ... Fs/2
<------------------> <---------------->
negative freq positive freq
因此,要回答您的问题,不需要,您无需在调用fftshift
或fft
之前或之后使用ifft
。但是,如果您在向量上使用了fftshift
,则应通过应用ifftshift
或fftshift
撤消它。 (我认为这两个电话是等效的。)关于matlab - 在致电fft或ifft之前,我需要先致电fftshift吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32166879/