matlab中的xcorr和autocorr
关键词:matlab中autocorr matlab中xcorr函数 matlab中xcorr matlab autocorr用法 matlab autocorr函数
自相关函数是信号间隔的函数,间隔有正负间隔,所以n个长度的信号,有2n-1个自相关函数值,分别描述的是不同信号间隔的相似程度。
end
也可以实现,其中N为序列长度此处并未求出全部的自相关序列,只求了间隔从0到p的。
1. 首先说说自相关和互相关的概念。
这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时间序列在任意两个不同时刻的取值之间的相关程度,即互相关函数是描述随机信号 x(t),y(t)在任意两个不同时刻t1,t2的取值之间的相关程度,自相关函数是描述随机信号x(t)在任意两个不同时刻t1,t2的取值之间的相关程度。
自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度;互相关函数给出了在频域内两个信号是否相关的一个判断指标,把两测点之间信号的互谱与各自的自谱联系了起来。它能用来确定输出信号有多大程度来自输入信号,对修正测量中接入噪声源而产生的误差非常有效.
事实上,在图象处理中,自相关和互相关函数的定义如下:设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。
那么,如何在matlab中实现这两个相关并用图像显示出来呢?
dt=.1;
t=[0:dt:100];
x=cos(t);
[a,b]=xcorr(x,’unbiased’);
plot(b*dt,a)
上面代码是求自相关函数并作图,对于互相关函数,稍微修改一下就可以了,即把
[a,b]=xcorr(x,’unbiased’);改为[a,b]=xcorr(x,y,’unbiased’);便可。
2. 实现过程:
dt=.1;
t=[0:dt:100];
x=3*sin(t);
y=cos(3*t);
subplot(3,1,1);
plot(t,x);
subplot(3,1,2);
plot(t,y);
[a,b]=xcorr(x,y);
subplot(3,1,3);
plot(b*dt,a);
yy=cos(3*fliplr(t)); % or use: yy=fliplr(y);
z=conv(x,yy);
pause;
subplot(3,1,3);
plot(b*dt,z,’r’);
即在xcorr中不使用scaling。
3. 其他相关问题:
1) 相关程度与相关函数的取值有什么联系?
对于相关系数的大小所表示的意义目前在统计学界尚不一致,但通常按下是这样认为的:
相关系数
0.00-±0.30
±0.30-±0.50
±0.50-±0.80
±0.80-±1.00
matlab计算自相关函数autocorr和xcorr有什么不一样的?xcorr是没有将均值减掉做的相关,autocorr则是减掉了均值
自己做的实验:
- [y,fs,nbits]=wavread(‘1b.wav’);
- frameSize=256;
- overLap=128;
- frameMat=buffer(y,frameSize,overLap);
- [ndim,nFrame]=size(frameMat);
- frame1=frameMat(:,50);
- subplot(3,1,1);
- plot([1:frameSize]/fs,frame1);
- %%%%用xcorr求自相关
- % E = mean(x);
- % X2 =x-E;
- % c =xcorr(x2);
- % d =c./c(N);
- % f =d(N:2*N-1);
- frame2=frame1-mean(frame1);%减掉均值
- [c,lags]=xcorr(frame2);
- d=c./c(frameSize);%归一化
- subplot(3,1,2);
- plot(lags(frameSize:end)/fs,d(frameSize:end));
- title(‘xcorr求自相关’);%没有减掉均值做相关
- %%%%用auotcorr求自相关
- [c1,lags1,bound]=autocorr(frame1,frameSize-1);
- subplot(3,1,3);
- plot(lags1(1:end)/fs,c1(1:end));
- title(‘autocorr求自相关’);%减掉了均值在做相关,最后做了归一化
- %比较两者的图形,结果一样。。
转载请注明:数据分析 » matlab中的xcorr和autocorr_matlab培训