我需要计算信号中“每秒模式”的数量。问题是信号的“形状”变化很大,而且是不可预测的。人们仍然很容易看到模式,但我不知道如何用代码做到这一点。
编辑为了更加清楚:说第一个样本是 1 秒。此样本中有 17 个模式副本。所以我想计算“17(每秒模式)”。此外,可能值得注意的是,下面的示例按此顺序来自连续测量。
任何想法如何解决这个问题?
(它需要实时计算模式。)
以下是一些信号样本。(所有图像的两个方向的缩放级别都相同。)





我需要计算信号中“每秒模式”的数量。问题是信号的“形状”变化很大,而且是不可预测的。人们仍然很容易看到模式,但我不知道如何用代码做到这一点。
编辑为了更加清楚:说第一个样本是 1 秒。此样本中有 17 个模式副本。所以我想计算“17(每秒模式)”。此外,可能值得注意的是,下面的示例按此顺序来自连续测量。
任何想法如何解决这个问题?
(它需要实时计算模式。)
以下是一些信号样本。(所有图像的两个方向的缩放级别都相同。)





您可以尝试使用音高检测/估计算法,在某些情况下,它可能比简单的自相关更强大(尤其是在您的一个示例中,其中包含略微不和谐的泛音)。根据估计的“音高”的频率或周期,您可以计算每秒模式重复的次数。
在我对这个问题的回答中提到了一堆音高估计方法:https ://stackoverflow.com/questions/7181630/fft-on-iphone-to-ignore-background-noise-and-find-lower-pitches
由于您有一个周期性信号,您可以查看自相关。峰值的滞后将告诉您组件的周期。如果“模式”是指每个周期内的峰值,则可以简单地进行另一轮峰值检测。