【问题标题】:Python: Zero Crossing method for Frequency EstimationPython:频率估计的过零方法
【发布时间】:2021-04-22 07:23:40
【问题描述】:

我正在尝试了解频率估计的过零方法。经过搜索,找到了这段代码:

est_freq = round(framerate / np.mean(np.diff(zero_crossings)) / 2)

进一步剖析学习,我写了以下代码:

import numpy as np

framerate = 1e3

a = [1, 2, 1, 1, -3, -4, 7, 8, 9, 10, -2, 1, -3, 5, 6, 7, -10]

signs = np.sign(a)
diff = np.diff(signs)
indices_of_zero_crossing = np.where(diff)[0]

print(a)
print(signs)
print(diff)
print(indices_of_zero_crossing)

total_points = np.diff(indices_of_zero_crossing)
print(total_points)

average_of_total_points = np.mean(total_points)
print(average_of_total_points)

freq = framerate/average_of_total_points/2

我的问题是,freq = framerate/average_of_total_points/2 行发生了什么。求过零差的均值除以 2 的目的是什么?

谁能解释一下?谢谢。

【问题讨论】:

    标签: python signal-processing frequency zerocrossing


    【解决方案1】:

    我不确定你从哪里得到采样频率(帧率),但在数字信号处理中有一个叫做Nyquist frequency 的东西,你不能可靠地采样超过一半的采样频率,这可以解释你的因素 2。请注意,在您的代码中,除法与 sn-p 不同。

    应该是freq = framerate/(average_of_total_points/2)

    【讨论】:

    • 采样频率是任意的,例如设置为1kHz。但是,在我的实际采样中,帧率为 2kHz,数据不同。
    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2011-03-11
    • 2018-01-03
    • 2017-12-03
    • 2021-04-24
    • 2018-10-04
    • 2018-10-16
    相关资源
    最近更新 更多