欢迎大家来到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(‘自相关函数’);
运行结果为:
从运行结果可以看出,自相关函数把被噪声污染了的正弦波提取了出来。
本文作者基于这个思想出发,试图将一段被噪声污染的音频信号恢复出来,但没有成功,恢复的结果是留下了噪音,里面的音乐被去除了,这里给出相应代码,欢迎有兴趣的朋友一起讨论。
fs=44100;
[x,fs]=audioread(‘addnoise.mp3’);
[R,ttt]=xcorr(x,);
filename = ‘filterafter.wav’;
audiowrite(filename,R,44100);
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/90832.html