FFT变换后如何获取对应频率值以用于傅里叶空间高斯拟合
生成FFT移位后对应频率轴的方法
- 首先明确前提参数:你需要先确定实空间数据的采样间隔
dx,即相邻两个实空间数据点之间的物理步长,最终生成的频率轴单位会是1/[dx的单位]。 - 直接使用numpy内置的
fftfreq接口生成频率轴即可,该接口会自动处理点数奇偶性等边界问题,不需要手动计算,具体操作如下:- 获取实空间数据的总点数:
N = len(func) - 生成原始未移位的频率数组:
freq = np.fft.fftfreq(N, d=dx) - 由于你已经对FFT变换结果执行了
fftshift操作(将零频率移到了数组中心),需要对频率数组做相同的移位操作保证对齐:freq_shifted = np.fft.fftshift(freq)
- 获取实空间数据的总点数:
- 你得到的
freq_shifted就是和func_fourier完全对齐的傅里叶空间频率轴,可直接用于绘图和后续的高斯模型拟合。
完整示例代码
import numpy as np import matplotlib.pyplot as plt from numpy.fft import fft as fourier # 你的实空间数据 # func = 你的实空间数据集 # 实空间采样间隔,根据你的实际采样参数填写 dx = 0.1 # 生成频率轴 N = len(func) freq = np.fft.fftfreq(N, d=dx) freq_shifted = np.fft.fftshift(freq) # 你已有的FFT变换逻辑 func_fourier = np.fft.fftshift(fourier(func)) # 对齐绘图 plt.plot(freq_shifted, np.abs(func_fourier)) plt.xlabel("频率") plt.ylabel("频谱幅值") plt.show()
补充说明
如果你的数据是二维/更高维,可对每个维度分别执行上述fftfreq+fftshift的操作,再通过np.meshgrid生成网格坐标即可。
内容的提问来源于stack exchange,提问作者trynerror
相关产品推荐
相关产品推荐

