自相关函数和互相关函数的 matlab 计算和作图
1. 首先说说自相关和互相关的概念。
这个是信号分析里的概念,他们分别表示的是两个时间序列之间和同一个时
间序列在任意两个不同时刻的取值之间的相关程度,即互相关函数是描述随机信
号 x(t),y(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. 实现过程:
在 Matalb 中,求解 xcorr 的过程事实上是利用 Fourier 变换中的卷积定理
进行的,即 R(u)=ifft(fft(f)×fft(g)),其中×表示乘法,注:此公式仅表示形式计
算,并非实际计算所用的公式。当然也可以直接采用卷积进行计算,但是结果会
与 xcorr 的不同。事实上,两者既然有定理保证,那么结果一定是相同的,只是
没有用对公式而已。下面是检验两者结果相同的代码:
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;
- 1
- 2
- 3
前往页