我有20个信号(时间进程),B组有20个信号。我想找到一个指标来表明A组与B组的不同。例如,我对每组内的信号运行了xcorr。但现在我需要以某种方式进行比较。我尝试获取每个xcorr对的最大幅度,也就是最大相似度的一种度量,然后我把两组的这些值都比较了一下,没有差别,那我还能怎么办呢,我还可以比较频谱,但我又不知道该取什么频率仓。任何建议/参考都非常感谢!
每组中有大约20个信号。这些是我的样本。我事先不知道可能有什么不同。这里我带来每组的9个样本信号,它们的信号子集的自相关和互相关(第1组对第1组,第2组对第2组,第1组对第2组)。我没有看到任何明显的差异。我也不明白您提出如何比较交叉相关性,我应该取哪些峰值?所有的信号都被去趋势化和z值化。
2条答案
按热度按时间jq6vz3qz1#
好吧,这可能是一个过于简单的答案,一个过于复杂的措施,但也许它的价值。
为了比较信号,我们必须建立一些标准来比较它们。这可能涉及很多方面。如果我们希望信号看起来相似,我们就进行时域分析。如果我们谈论的是听起来相似的音频信号,我们就关心频率或时频分析。如果信号应该代表噪声,那么信号方差应该是一个很好的度量。2一般来说,我们可能希望使用各种度量的组合。3我们可以用加权指数来做这件事。
首先,让我们建立我们所拥有的:存在两组信号:集合A和集合B。我们需要显示集合A与集合B不同的一些度量。信号被去趋势化。
我们取A中的信号a和B中的信号B。我们可以比较的事情列表如下:
***时域相似度(静态):**原地相乘求和。
***时域中的相似性(带移位 *):**对每个信号进行FFT、相乘和ifft(我认为这相当于matlab的xcorr)。
*频域相似性(静态):**对每个信号进行FFT,相乘,求和。
***频域相似性(移位 *):**将两个信号相乘并进行FFT。这将显示信号是否具有相似的频谱形状。
***能量(或功率,如果长度不同)的相似性:**求两个信号的平方并求和(并除以信号长度以得到功率)。(由于信号被去趋势化,这应该是信号方差。)然后相减并取绝对值以用于信号方差相似性的测量。
**(频域相似性)--您可能希望屏蔽不关心的频谱部分,例如,如果您只关心更高频率的结构(fs/4及以上),您可以:
此外,我们可能希望实现如下循环相关:
最后,我们选择重要或相关的特征,并创建加权指数。示例:
我们为每对信号计算该指数。
我希望这个信号特征的概述能有所帮助。如果有什么不清楚的地方请评论。
vwhgwdsa2#
参考Brian上面的回答,我编写了一个Python函数来计算时间序列信号的相似度,如下所示: