相关函数xcorr的用法及实例

相关函数xcorr的用法及实例相关函数相关函数描述了两个信号之间的相似性 其相关性大小有相关系数衡量 1 自相关函数自相关函数是信号在时域中特性的平均度量 它用来描述随机信号 x t 在任意两个不同时刻 s t 的取值之间的相关程度 其定义式为 自相关函数的主要性质 1

欢迎大家来到IT世界,在知识的湖畔探索吧!

相关函数

相关函数描述了两个信号之间的相似性,其相关性大小有相关系数衡量。

1.自相关函数

自相关函数是信号在时域中特性的平均度量,它用来描述随机信号x(t)在任意两个不同时刻s,t的

取值之间的相关程度,其定义式为:

自相关函数的主要性质:

(1)自相关函数为偶函数,其图形对称于纵轴。

(2)当s=t 时,自相关函数具有最大值,且等于信号的均方值,即

(3)周期信号的自相关函数仍为同频率的周期信号。

2.互相关函数

互相关函数是描述随机信号X(s),Y(t)在任意两个不同时刻s,t的取值之间的相关程度。

互相关函数的应用

互相关函数的上述性质在工程中具有重要的应用价值。

(1) 在混有周期成分的信号中提取特定的频率成分。

(2) 线性定位和相关测速。

在某些领域,自相关函数等同于自协方差。

matlab中提供了xcorr这个相关函数以供调用。但这个函数在使用中比较麻烦,本文将介绍这个函数的具体用法。

本文将详细介绍对应每个注释项Matlab是如何计算的,当然本文考虑输入的是一个简单一维序列

x=[2,3,4],序列中数据对应的序号依次为1,2,3。

第一:缺省注释项,[a,b]=xcorr(x),通过该命令计算的结果为:a=8 18 29 18 8; b=-2 -1 0 1 2。

下面介绍一下,该过程计算机是如何计算的,首先讲b的计算,设一维序列的长度为N,则序列中任意两个数据序号相减,最小值为1-N,最大值为N-1,且能取遍两者之间的所有整数,将这些数从小到大排列得到的就是b;然后讲a的计算,在缺省注释项的情况下,a的计算是这样的,a的每一项是对应b的每一项的

1、当b(1)=-2时,计算a(1)时只用到一组数据——(2,4)注意顺序,只有这两个数据的序号相减(后面数据的序号减去前面的)满足b=-2,因此a(1)的计算公式为:2*4=8

2、当b(2)=-1时,计算a(2)时用到两组数据——(2,3)和(3,4),这两组数据的序号相减(后面数据的序号减去前面的)满足b=-1,因此a(2)的计算公式为:2*3+3*4=18

3、当b(3)=0时,计算a(3)时用到三组数据——(2,2)、(3,3)、(4,4),这三组数据的序号相减(后面数据的序号减去前面的)满足b=0,因此a(3)的计算公式为:2*2+3*3+4*4=29

其它类推。

第二:注释项为‘unbiased’,[a,b]=xcorr(x,‘unbiased’),通过该命令计算的结果为:

a=8.0000 9.0000 9.6667 9.0000 8.0000;b=-2 -1 0 1 2。

1、当b(1)=-2时,计算a(1)时只用到一组数据(记N=1)——(2,4)注意顺序,只有这两个数据的序号相减(后面数据的序号减去前面的)满足b=-2,因此a(1)的计算公式为:(2*4)/1=8

2、当b(2)=-1时,计算a(2)时用到两组数据(记N=2)——(2,3)和(3,4),这两组数据的序号相减(后面数据的序号减去前面的)满足b=-1,因此a(2)的计算公式为:(2*3+3*4)/2=9

即在原结果的基础上除以用到的数据的组数。

第三:注释项为‘biased’,[a,b]=xcorr(x,‘biased’),通过该命令计算的结果为:a= 2.6667 6.0000 9.6667 6.0000 2.6667,b=-2 -1 0 1 2。下面介绍计算机如何计算该过程,注意到本次计算用到的序列x的长度为3,记为M=3。

1、当b(1)=-2时,计算a(1)时只用到一组数据——(2,4)注意顺序,只有这两个数据的序号相减(后面数据的序号减去前面的)满足b=-2,因此a(1)的计算公式为:(2*4)/M= 2.6667

2、当b(2)=-1时,计算a(2)时用到两组数据——(2,3)和(3,4),这两组数据的序号相减(后面数据的序号减去前面的)满足b=-1,因此a(2)的计算公式为:(2*3+3*4)/M=6

3、当b(3)=0时,a(3)的计算公式为:29/M= 9.6667

即在原结果的基础上除以序列x的长度。

第四:注释项为‘coeff’,[a,b]=xcorr(x,‘coeff’),通过该命令计算的结果为:a= 0.2759 0.6207 1.0000 0.6207 0.2759,b=-2 -1 0 1 2,这种情况实际是将第三种情况下得到的结果进行归一化,使得b=0时对应的值为1,a(1)= 2.6667 /9.6667=0.2759;a(2)=6/9.6667= 0.6207 ,

a(3)=9.6667/9.6667=1。

互相关情况:

假设 x=[2,3,4];y=[3,4,5];则语句[a,b] = xcorr(x,y)的运行结果为:

a =

10.0000 23.0000 38.0000 25.0000 12.0000

b =

-2 -1 0 1 2

原因是相同的:当b=-2时,只有x里面的元素2和y里面的元素5符合条件,因此b(-2)=10,其它的类推。

为了对相关函数的作用有一个直观的认识,下面给出一个应用实例:

n=6000;

fs=1000;

t=(0:n-1)/fs;

f0=5;

x=sin(2*pi*f0*t);

z=x+randn(size(x));

[R,ttt]=xcorr(z,1000,’coeff’);

subplot(2,1,1);

plot(t(1:1000),z(1:1000));

xlabel(‘时间/s’);

ylabel(‘幅值’);

subplot(2,1,2);

plot(ttt,R);

xlabel(‘滞后’);

ylabel(‘自相关函数’);

运行结果为:

相关函数xcorr的用法及实例

从运行结果可以看出,自相关函数把被噪声污染了的正弦波提取了出来。

本文作者基于这个思想出发,试图将一段被噪声污染的音频信号恢复出来,但没有成功,恢复的结果是留下了噪音,里面的音乐被去除了,这里给出相应代码,欢迎有兴趣的朋友一起讨论。

fs=44100;

[x,fs]=audioread(‘addnoise.mp3’);

[R,ttt]=xcorr(x,);

filename = ‘filterafter.wav’;

audiowrite(filename,R,44100);

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/90832.html

(0)
上一篇 2024年 11月 24日 上午8:55
下一篇 2024年 11月 24日 上午9:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信