python - 我有一个以 25 毫秒等间隔的样本数组。我想确定基波的频谱
问题描述
比如说 N=1000 以 1 ms 采样率采样的电压。我需要用 python/numpy 精确找到基波的幅度和角度,它在 45 到 55 Hz 之间以及可能存在的任何边带。我需要一个锁相环来做到这一点,还是没有它可以做到?
解决方案
锁相环是估计基波频率等的合理方法。假设您预先收集了 N 个样本,另一种分析方法是:
np.hanning(N)
通过将其与样本逐点相乘来应用一个窗口,例如。- 使用np.fft.rfft计算频谱。对于
Ts
秒的采样间隔,结果数组的第 n 个元素是以n * N * Ts
Hz 为单位的频率的 DFT 系数(或值 N=1000,Ts=0.001,简单n
Hz)。 - 找到峰值幅度在 45 到 55 之间的 bin。峰值的位置给出了基波的频率。您可以在几个相邻的 bin 中插入多项式 ( np.polyfit ) 并找到它的峰值以获得更精确的估计。峰值的幅度和复相位给出了基波的幅度和相位(角度)。
- 绘制频谱的幅度以寻找边带。
推荐阅读
- r - 如何使用Shell()在R中保存和关闭excel文件
- hadoop - sudo 纱线应用程序 -kill
认为我是用户 hdfs? - c++ - 嵌入 Python:未定义对 `_imp__Py_Initialize' 的引用
- android - 覆盖其他配置中的资源 - Android Studio
- javascript - 将更改数组传递给子组件@Input 字段
- java - 按下时如何全屏显示图像?
- ruby - storage-attach id 与 vagrant 自定义 id 不同
- scala - 如何将向量的列或序列转换为稀疏矩阵?
- javascript - 用于在 javascript 中录制视频的 Ziggeo 元配置文件参数
- c# - 时间:2019-04-01 标签:c#fizzbuzz自动数字生成器