在David Voelz撰写的“计算傅立叶光学,Matlab教程”一书中,写道,在调用fft或ifft之前需要先调用fftshift,但是在Matlab文档中,命令fftshift只是写了该命令“重新排列”通过将零频率分量移动到阵列的中心来输出fft,fft2和fftn的输出”。Matlab文档中没有提到应在调用fft之前调用此命令,而我看到了一些示例,这些示例调用fft而不先调用fftshift。
我的问题是:在调用fft或ifft之前是否需要调用fftshift?如果在调用fft之前不需要调用fftshift,而仅在调用fft之后才需要调用fftshift,那么我们何时应该使用ifftshift命令(如果有的话)来计算数据集的fft?
小智 9
fft为了节省计算时间,matlab仅计算频谱的一半(正频率和零频率,如果您的样本数为奇数)。然后,频谱的后半部分(即前半部分的复共轭)刚好添加到该向量的末尾。
所以你在 a 之后得到的fft是以下向量:
0 1 2 3 ... Fs/2 -Fs/2 ... -3 -2 -1
<----------------> <------------------>
positive freq negative freq
Run Code Online (Sandbox Code Playgroud)
哪里Fs是频率样本。
现在,fftshift所做的只是在向量的开头移动负频率箱(频谱的第二部分),以便您可以显示从 开始到-Fs/2结束的不错的频谱+Fs/2。移位向量变为:
-Fs/2 ... -3 -2 -1 0 1 2 3 ... Fs/2
<------------------> <---------------->
negative freq positive freq
Run Code Online (Sandbox Code Playgroud)
因此,要回答您的问题,您不需要fftshift在调用fftor之后或之前使用ifft。但是如果你fftshift在你的向量上使用了 a ,你应该通过应用ifftshiftor来撤消它fftshift。(我认为这两个调用是等效的。)
如果您继续阅读以下文档fftshift:“它对于可视化频谱中间零频率分量的傅里叶变换很有用。”
执行 fft 不需要平移,但可以方便地可视化傅里叶变换。因此,是否使用fftshift取决于您是否想要可视化您的变换。
| 归档时间: |
|
| 查看次数: |
8618 次 |
| 最近记录: |