首页 > 解决方案 > 我有一个以 25 毫秒等间隔的样本数组。我想确定基波的频谱

问题描述

比如说 N=1000 以 1 ms 采样率采样的电压。我需要用 python/numpy 精确找到基波的幅度和角度,它在 45 到 55 Hz 之间以及可能存在的任何边带。我需要一个锁相环来做到这一点,还是没有它可以做到?

标签: pythonsignal-processingfft

解决方案


锁相环是估计基波频率等的合理方法。假设您预先收集了 N 个样本,另一种分析方法是:

  1. np.hanning(N)通过将其与样本逐点相乘来应用一个窗口,例如。
  2. 使用np.fft.rfft计算频谱。对于Ts秒的采样间隔,结果数组的第 n 个元素是以n * N * TsHz 为单位的频率的 DFT 系数(或值 N=1000,Ts=0.001,简单nHz)。
  3. 找到峰值幅度在 45 到 55 之间的 bin。峰值的位置给出了基波的频率。您可以在几个相邻的 bin 中插入多项式 ( np.polyfit ) 并找到它的峰值以获得更精确的估计。峰值的幅度和复相位给出了基波的幅度和相位(角度)。
  4. 绘制频谱的幅度以寻找边带。

推荐阅读