在David Voelz撰写的《计算傅立叶光学,Matlab教程》一书中,写道,在调用fftshift或k之前,需要先调用fft,但是在MATLAB文档fftshift中,只写了该命令



在文档中没有提到在调用fft之前应先调用此命令,并且我看到了一些示例,这些示例在不事先调用fft的情况下调用fftshift

我的问题是:是否需要在调用fftshiftfft之前调用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
因此,要回答您的问题,不需要,您无需在调用fftshiftfft之前或之后使用ifft。但是,如果您在向量上使用了fftshift,则应通过应用ifftshiftfftshift撤消它。 (我认为这两个电话是等效的。)

关于matlab - 在致电fft或ifft之前,我需要先致电fftshift吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32166879/

10-10 21:26