什么是相关函数
相关函数的引入,是为了比较某信号与另一延时
的信号之间的相似程度,计算如下:
通常情况下,
,二者的关系应该是关于y轴对称的.因为如果A信号在滞后了
个时间后与B信号相似,相应的,B信号应该超前
个时间与A信号相似
卷积与相关运算不同
卷积定义如下
而相关运算
他们两个是不一样的!!!
如果我们把两不同信号换成相同信号,就得到了信号的自相关函数
表示信号自身与自身的相关程度,当然还有另外一种用法就是做Fourier变换算功率谱密度psd,但是这个不是今天讨论的重点
如何在音频中识别信号
如果我们现在有一段音频,已知音频中含有几个正弦分量,并且单独间断的出现,由于噪声的污染,我们已经无法根据波形分辨,那么我们应当如何分辨这几个单频信号,他们又是分别出现在哪些时间段里呢?
为了解决这个问题,我们就需要用到相关函数这个工具了.
例如这样的一段信号:
(数据是今天上课老师给的,想要的话可以用matlab自己拼几段正弦波放出来,再用别的设备录下来,纯天然白色噪声 )
鬼知道这里面都什么玩意,做FFT一看确实有几个离散的频率分量
不管直流量,第一个离散分量的频率是110Hz.但是很显然时域图像和110Hz的正弦波没有半毛钱关系.所以这个时候,借用相关函数算一下检测信号与标准信号
的相关系数.
由于自相关函数表示两信号间相似程度,借助自相关函数我们可以看到:在某时间段内,检验信号与110Hz正弦波相关性较强,所以我们可以认为这就是110Hz正弦波出现的时间。
我们注意到,得到的相关系数有的是负,所以说这两个信号的相关程度比0还小 相关系数正负表示方向,大小表示程度.比如说这样
aid_c=sin(2*pi*f1*t);
aid=cos(2*pi*f1*t);
[C lag]=xcorr(aid,aid_c,'coeff');
plot(lag,C)
两个相位相差90度的正弦信号的相关系数
我们可以看到,在X=2时,此时sin在时轴上大约前移了90度,此时两信号相位差达到180,图像关于x轴对称.
虽然是反向的,也就是说此时相关系数为负,但是并不妨碍他俩相似,只是变化的趋势刚好相反.
所以我们得到相关系数后,要进一步取绝对值.
其实在信号检测时还有一个问题,就是待测信号和标准信号的相位差.假设在一个待测信号中有多段正弦信号间断的出现,我们很难保证标准信号在时移的过程中与待测信号中的正弦波没有相位差,一但出现相位差,势必减小相关性,导致识别误差.
就好比在很多钟表中找一种特殊的,你不能保证每次拿起来的时候都是同一个方向,可能12点向上,也可能6点向上,这样就会增加错判的可能.
为了解决这个问题,我们在检测时,通常给出多个标准信号,这些标准信号的频率相同但相位不同,再将每次检测得到的相关系数取绝对值相加.这样提高了识别的正确性.
下图就是采用
和
作为标准信号的识别结果
可以看到识别结果明显优于单标准信号的检测