【自我理解】
fft:可以指定點數的快速傅里葉變換
fftshift:將零頻點移到頻譜的中間
用法:
Y=fftshift(X)
Y=fftshift(X,dim)
描述:fftshift移動零頻點到頻譜中間,重新排列fft,fft2和fftn的輸出結果。
將零頻點放到頻譜的中間對於觀察傅立葉變換是有用的。
fftshift(fft(fftshift(x)))
先將s搬到中心,然后fft變換,再將變換后的移到中心。
使用fftshift(fft(fftshift(x)))后的效果:
1.不改變頻譜的幅度和相位
2.使得頻譜的范圍為-Fs/2到Fs/2,中心頻率為0
准確的頻率是:
int n=N%2==0?N/2:((N-1)/2);
最左邊頻率 -Fs/N*n
最右邊頻率 Fs/N*(N-n-1)
其中N是系列長度,Fs是采樣頻率
3.頻譜的實部全為正數,震盪性消失
使用注意:
為使得輸出結果與理論分析相同,需要乘以系數
FFT: fftshift(fft(fftshift(x))) * dt
IFFT: fftshift(ifft(fftshift(X))) * fs
其次:
MATLAB中實現的IFFT已經除以序列長度L,FFTW中沒有除以序列長度,需要自己補上
【參考文獻】
Matlab中fft與fftshift命令的小結與分析
http://blog.sina.com.cn/s/blog_68f3a4510100qvp1.html
Matlab fftshift 詳解
https://blog.csdn.net/myathappy/article/details/51344618