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

如何对傅里叶变换幅度的NumPy数组进行对数重采样?

对数重采样傅里叶幅度数组的简洁实现

可以用numpy生成对数间隔的目标频率轴,结合scipy.interpolate.interp1d实现支持多种插值方法的重采样,核心代码能压缩到2行左右:

import numpy as np
from scipy.interpolate import interp1d

# 假设amp是你的傅里叶幅度数组,先定义原线性频率轴
freqs_linear = np.arange(100, 10001, 100)  # 100Hz到10kHz,步长100Hz
# 1. 生成对数间隔的目标频率(以底数2为例,自动覆盖到10kHz)
freqs_log = np.logspace(np.log2(100), np.log2(10000), num=int(np.log2(10000/100))+1, base=2)
# 2. 执行插值重采样,可指定插值方法
amp_log_resampled = interp1d(freqs_linear, amp, kind='linear')(freqs_log)

关键细节说明:

  • 对数底数配置:修改np.logspace的base参数即可切换底数,比如设为10就生成100Hz、1000Hz、10000Hz这类10倍间隔的频率点
  • 插值方法选择:kind参数支持'linear'(线性)、'quadratic'(抛物线)、'cubic'(三次样条)等,按需替换即可
  • 目标点数控制:num参数可手动指定重采样后的点数,示例中是按底数2的倍数自动计算到10kHz的点数

如果不想依赖scipy,仅用numpy实现线性插值的话,代码更简洁:

freqs_log = np.logspace(np.log2(100), np.log2(10000), num=int(np.log2(10000/100))+1, base=2)
amp_log_resampled = np.interp(freqs_log, freqs_linear, amp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:18:08