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

如何在Python中对数据集提取的数组值做FFT可视化?

FFT实现与可视化方案

1. 数据预处理

你的smpl是二维字符串列表,首先需要将其转换为一维浮点数数组,才能进行FFT计算:

import numpy as np

# 展平二维列表并转成浮点数
signal = np.array([float(val) for sub_list in smpl for val in sub_list])

2. 执行FFT计算

使用NumPy的FFT工具包完成变换,同时计算对应的频率轴(注意替换实际采样率):

# 执行快速傅里叶变换
fft_output = np.fft.fft(signal)

# 配置采样率(根据你的数据实际情况修改,比如100Hz)
sampling_rate = 100
sample_count = len(signal)

# 生成频率轴
freq = np.fft.fftfreq(sample_count, d=1/sampling_rate)

# 提取正频率部分的幅值(FFT结果对称,取前半部分即可)
amplitude = np.abs(fft_output)[:sample_count//2]
freq_axis = freq[:sample_count//2]

3. 可视化结果

用Matplotlib绘制原始信号和FFT幅值谱:

import matplotlib.pyplot as plt

# 创建画布
plt.figure(figsize=(12, 8))

# 绘制原始信号
plt.subplot(2, 1, 1)
plt.plot(signal, color='#1f77b4')
plt.title('原始时域信号')
plt.xlabel('样本索引')
plt.ylabel('信号幅值')

# 绘制FFT幅值谱
plt.subplot(2, 1, 2)
plt.plot(freq_axis, amplitude, color='#ff7f0e')
plt.title('FFT幅值谱')
plt.xlabel('频率 (Hz)')
plt.ylabel('幅值')

# 调整子图间距
plt.tight_layout()
plt.show()

注意事项

  • 务必替换sampling_rate为你的数据实际采样频率,否则频率轴会失真
  • 如果smpl中存在非数值字符串,需要先做数据清洗(比如过滤无效值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:45:49