欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Matlab函数:fftshift的重新编写

最编程 2024-08-14 14:29:04
...
fftshift
将零频率的分量移到频谱的中心

语法
Y=fftshift(X)
Y=fftshift(X,dim)

描述
通过移动零频率分量到数组的中心,Y=fftshift(X)对fft、fft2、fftn的输出进行了重新的排列。这对于用肉眼观察傅里叶变换是非常有帮助的,因为零频率的分量在频谱的中心。
对于向量,fftshift(X)将X均分为左右两部分并兑换。对于矩阵,fftshift(X)将第一个四分块同第三个四分块调换,第二个同第四个调换。如下图所示。

对于更高维的数组,fftshift(X)沿着X的每一个维度,将X的两个“半空间”对调。
Y=fftshift(X,dim)是对X的dim维度进行fftshift操作。

注意:ifftshift是fftshift的逆过程。如果矩阵X包含奇数个元素,为了得到原始的X,我们必须用ifftshift(fftshift(X))这个操作。单纯的通过两次使用fftshift(X)将不会得到X。

例子:对于任意的矩阵X
Y= fft2(X)
有Y(1,1)=sum(sum(X));信号的零频率分量在二维FFT的左上角处。对于
Z= fftshift(Y)
这个零频率分量就会出现在矩阵的中心处附近。
fftshift和ifftshift的不同对于奇数长度的输入序列是非常重要的。
N=5;
X=0:N-1;
Y=fftshift(fftshift(X));
Z=ifftshift(fftshift(X));
注意到Z就是X,而Y不是。
isequal(X,Y),isequal(X,Z)
ans =

     0

ans =

     1


也可以查看
cirshift,fft,fft2,fftn,ifftshift

推荐阅读