corr()函数matlab_基于Cross-Correlation互相关函数的信号同步方法

本文介绍了在MATLAB中利用互相关函数进行信号同步的方法。通过分析两个通道的声信号,当它们与同一声源同步变化时,可以计算互相关函数找到最佳对齐点,实现信号的精确同步。文章以实际的声场分析为例,展示了如何使用xcorr函数计算互相关并调整信号延迟,从而达到信号对齐的目的。
摘要由CSDN通过智能技术生成

7a9fc9b5e71113b190caada167501ae1.png

背景

最近做刷牙声场分析的时候遇到这样一个问题:

同时采集了两个通道的声信号,其中一路,喉麦信号

equation?tex=T 是通过MIC->链路线->3.5接口进入手机,另一路蓝牙耳机录制的信号
equation?tex=B 是经过MIC->蓝牙DSP编码->蓝牙传输进入手机,两路信号的传输时延不同,并且两路信号的开始采集时间不同。这就导致在一个时间窗口内,两个通道的信号的时间戳是没有对齐的,如图1所示。如果想融合这两个通道的信号特征并进行分类,这一时间偏差会导致准确率严重下降。

8c0402e5b0639bd64e82d7152820cdf0.png
图1 从峰值的位置可以看出 两个通道的信号是没有对齐的 通道T(上)落后于通道B(下)

那么如何解决时间同步的问题?通过分析这两路信号的特征,可以发现有以下特点:

在录制的过程中,物理世界发声的声源只有一个,因此两个MIC录到的一定是同一个振动产生的声信号,当这个振动源的特性发生改变时(如达到共振峰,或者瞬时能量为0),一定会在两个通道的信号中都有所体现,也就是说,虽然两路信号的绝对时间戳没有对齐,但是以声源的时间为参考,这两路信号在任意时刻的变化趋势一定是与发声源相同的。

以图1为例,在声源出现三次振荡时,可以观察到,T和B两个通道都记录到了三次振荡,只不过由于时延,B记录到的振荡是比T要稍微靠前的。直观来讲,如果B和T是同步的,那么当B达到峰值时,T也应该达到峰值;B达到0值时,T也应该达到0值,但是在图1中,以较为明显的第二次振荡为例,B达到峰值时,T等待了若干ms的时间才达到峰值。因此,在这个有偏差的系统中,B和T在任意时刻,有相同变化的趋势(B是峰值T也是峰值,B是0点T也是0点的趋势)都是比较小的。

这时我们就可以考虑,保持B不动,如果把信号T往前滑动几ms,那么B和T有相同变化的趋势就大一点;再往前移几ms,那么B和T有相同变化的趋势就又大一点.......那什么时候B和T有相同变化的趋势是最大的呢?

——没错,就是当B和T完全对齐的时候,这个时候,B和T永远是同步变化的,如果振动源到达了峰值,那么B和T同时为峰值,振动源为0,那么B和T就同时为0。

反过来思考,什么时候B和T是对齐的呢?

——就是当B和T有相同变化的趋势最大的时候!

因此,我们就有了对齐B和T这两路信号的比较Naive的算法:

保持其中一个通道的信号B不动,从左到右滑动另一通道的信号T,每滑动一步,就计算一下B和T的相同变化趋势,如果滑动到第n步时B和T的相同变化趋势达到了最大,这就说明B和T的时间差是n步(即n个采样点),那么把T平移n个采样点就可以与B对齐了。

实际上,上述思想就是信号分析中一个非常经典的方法:互相关分析(Cross-Correlation Analysis)。


互相关函数

我们都知道,在统计学里互相关用来表示两个随机向量

equation?tex=X
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值