You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中fftshift(fft2(fftshift(x)))与fftshift(fft2(x))的差异及正确频谱获取

二维数组频谱与连续傅里叶变换匹配的正确实现

要明确两种实现的差异,得先理清MATLAB中fft2和fftshift的作用:

  • fft2(x)计算的是二维离散傅里叶变换(DFT),默认结果中直流分量(0频率)位于数组的(1,1)位置(MATLAB 1-based索引)。
  • fftshift的作用是将数组的中心与原点对齐,把直流分量从角落移到数组中心,让频谱的频率分布和连续傅里叶变换的可视化逻辑一致。

两种实现的区别

  1. fftshift(fft2(x))
    这是匹配连续傅里叶变换的正确写法:

    • 先通过fft2(x)得到x的DFT结果,再用fftshift将频谱的直流分量移到中心,此时频谱的幅度和相位都与连续傅里叶变换的离散近似完全匹配(若要数值完全一致,还需乘以采样间隔的乘积dx*dy,因为DFT是求和,连续傅里叶变换是积分,采样间隔对应积分的微分元)。
  2. fftshift(fft2(fftshift(x)))
    这个操作先对x做循环移位(把x的中心移到(1,1)),再做DFT,最后再移位回中心:

    • 由于DFT的循环移位性质,结果的幅度和前者完全相同(复指数因子的模为1),但会引入额外的线性相位偏移,导致相位不再与连续傅里叶变换匹配。

结论

  • 若只需要观察频谱的强度分布,两种写法效果一致;
  • 若要得到与连续傅里叶变换完全一致的频谱(包含相位信息),请使用fftshift(fft2(x)),必要时乘以采样间隔的乘积dx*dy来校准数值。

内容的提问来源于stack exchange,提问作者Zachery Zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:23:15