• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab—— ifftshift,fftshift

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  1. fft(转换到频域)得到的像谱默认不是按照中心对称的(快速傅里叶变换的原因),一般需要用fftshift方法使得其按中心对称,这样的话当我们ifft时(转换回时域),得到的数据就会和之前实际的不一样了,所以还需加ifftshift 来还原。

  2. fft是一维的傅里叶变换,是将时域信号转换为频域信号的 fftshift是这针对频域信号的,将fft的DC分量移到频谱中心区,
    而iffshift是fftshift的逆运算,将fftshift还原。

  3. Ifftshift和fftshift两者实际上是不同的。首先,ifftshift和fftshift执行的都是圆周位移的操作。fftshift是将数组或矩阵按正方向(向右和向下)做圆周位移,而ifftshift是按负方向(向左和向上)做圆周位移。圆周位移的步长等于数组或矩阵长度的一半,对于偶数是N/2,对于奇数是(N-1)/2。这也就是为什么对于偶数长的数组,fftshift和ifftshift的结果相同,而对于奇数长的数组,两者结果却不一样的原因。
    例子:
    A=[1,2,3,4,5];
    B=fftshift(A)=[4,5,1,2,3]; 12345整体向右移动(5-1)/2=2位
    C=ifftshift(A)=[3,4,5,1,2];12345整体向左移动(5-1)/2=2位
    两次fftshift不能使数列恢复原状,而要如下使用
    ifftshift(fftshift(A))=A

少了omega = ifftshift(omega);


有omega = ifftshift(omega);

结论:ifftshift可以改善信号图像。

补充:(可以不看)
fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来
以下是Matlab的帮助文件中对fftshift的说明:
Y = fftshift(X) rearranges the outputs of fft, fft2, and fftn by moving the zero-frequency component to the center of the array. It is useful for visualizing a Fourier transform with the zero-frequency component in the middle of the spectrum. For vectors, fftshift(X) swaps the left and right halves of X.
例子如下:
clear;
clc;
t=0:0.001:2;
n=2001;
Fs=1000;
Fc=200;
x=cos(2piFc*t);
y1=fft(x);
y2=fftshift(y1);
f=(0:2000)*Fs/n-Fs/2;
hold on;
plot(f,abs(y1),‘r’)
plot(f,abs(y2),‘b’)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
rust中的arm交叉编译发布时间:2022-07-18
下一篇:
配置IDEA Rust 环境发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap