在复合周期信号的周期开始时找到样本

Gar*_*ies 5 c signal-processing

我有一个信号由许多正弦波的总和组成.它们的间隔为100Hz,最低分量频率为200Hz(200Hz,300Hz ......等).所有分量正弦波都在相位= 0的同一点开始.在我的DSP软件中,我要将这个信号相乘通过几个其他信号,我需要找到一个点,在该点处所有原始信号的分量信号都再次处于相位= 0.

如果我只使用一个正弦波,我可以简单地寻找从负到正的符号变化.然而,如果信号具有200Hz和300Hz的分量,则有三个过零点,其中符号从负变为正,但只有一个表示周期的开始,并且这随着更多的分量波而增加.在初始启动序列中,我确实可以控制每个分量频率的幅度.如果这些波是严格谐波(200Hz,400Hz,800Hz等),我可以简单地删除除最低频率以外的所有波,找到其周期的开始,并将其用作我的零样本.但是,我没有这个带宽.任何人都可以提供替代方法吗?

编辑:

(我已经澄清并将此编辑整合到问题正文中.)

编辑2:

此图形应该说明问题.这里的频率两个分量是n和3n/2.如果没有滤除除最低频率以外的所有频率,或者按照@hotpaw的建议采用FFT,那么只查找符号从负正变化的零交叉的算法将落在三个中的一个上,我必须找到第一个三(这是每个分量信号处于相位= 0的一个点).我意识到采用FFT会起作用,但我处理的处理能力非常有限,并且想知道是否有更简单的方法.

采样波形

gro*_*ndi 3

看看信号的导数!

您的信号是正弦之和(抱歉,我不知道如何正确格式化公式)

S = sum(a_n * sin(k_n * t)) ... over all n

a_n 是正振幅,k_n 是正频率。信号的导数(您可以轻松地进行数值计算)是

dS/dt = sum(a_n * k_n * cos(k_n * t)) ... over all n

在 t=0 (您正在寻找的)时,导数具有最大值,因为所有余弦项同时为一。

一些补充:对于实际实现,您需要考虑导数可能有噪声,因此可能需要某种简单的一阶滤波。