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

Python与MATLAB计算FFT结果不匹配问题求助

问题原因与解决办法

你的问题出在数组维度上:

  • MATLAB里rect是100×1的列向量,fft(rect)会对整个向量做一维FFT。
  • Python中你创建的rect是(100,1)的二维数组,scipy.fft.fft默认对最后一维(也就是每个长度为1的子数组)做FFT,单个元素的FFT结果就是它本身,所以得到实部全1、虚部全0的结果。

修正后的Python代码

把二维数组改成一维数组,或者指定FFT的轴:

方法1:使用一维数组

import numpy as np
from scipy.fft import fft

rect = np.zeros(100)
for j in range(44, 55):
    rect[j] = 1

frect = fft(rect)

方法2:指定FFT的轴

如果需要保留二维结构,在fft中指定axis=0:

import numpy as np
from scipy.fft import fft

rect = np.zeros((100, 1))
for j in range(44, 55):
    rect[j] = 1

frect = fft(rect, axis=0)

修正后,Python计算的frect就会和MATLAB的结果一致(MATLAB与scipy的FFT输出顺序一致,无需额外移位,除非需要中心对称的频谱)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:13:11