如何从带回波的信号中用自相关函数算出延迟,原理加MATLAB程序。
x[n]为原信号(没有回波),回波y[n]=x[n]+a*x[n-N1]+b*x[n-N2]。现在a,b,N1,N2都不清楚,有一种方法可以用y[n]的自相关函数估算出a...
x[n]为原信号(没有回波),回波y[n]=x[n]+a*x[n-N1]+b*x[n-N2]。现在a,b,N1,N2都不清楚,有一种方法可以用y[n]的自相关函数估算出a,b,N1,N2来。哪位大虾能告诉我原理,及算法,最好有MATLAB程序。我只有50分全拿出来了,课程设计要用,救急!!!!
展开
1个回答
展开全部
自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度.设原函数是f(t),则自相关函数定义为R(u)=f(t)*f(-t),其中*表示卷积.
给个例子:
dt=.1;
t=[0:dt:100];
x=cos(t);
[a,b]=xcorr(x,'unbiased');
plot(b*dt,a)
上面代码是求自相关函数并作图,
matlab中查看帮助时,
help xcorr 解释其意思是:
C(m) = E[A(n+m)*conj(B(n))] = E[A(n)*conj(B(n-m))];
但是,在调用xcorr函数求自相关时,有 scaleopt参数
r=xcorr(s,SCALEOPT)
SCALEOPT有
'biased' - scales the raw cross-correlation by 1/M.
'unbiased' - scales the raw correlation by 1/(M-abs(lags)).
'coeff' - normalizes the sequence so that the auto-correlations
at zero lag are identically 1.0.
'none' - no scaling (this is the default).
注意观察下面的测试:
s = [1 2 3]
r = xcorr(s);
r =
3.0000 8.0000 14.0000 8.0000 3.0000
当用r=xcorr(s,'unbiased')时就能得到
r =3.0000 4.0000 4.6667 4.0000 3.0000
给个例子:
dt=.1;
t=[0:dt:100];
x=cos(t);
[a,b]=xcorr(x,'unbiased');
plot(b*dt,a)
上面代码是求自相关函数并作图,
matlab中查看帮助时,
help xcorr 解释其意思是:
C(m) = E[A(n+m)*conj(B(n))] = E[A(n)*conj(B(n-m))];
但是,在调用xcorr函数求自相关时,有 scaleopt参数
r=xcorr(s,SCALEOPT)
SCALEOPT有
'biased' - scales the raw cross-correlation by 1/M.
'unbiased' - scales the raw correlation by 1/(M-abs(lags)).
'coeff' - normalizes the sequence so that the auto-correlations
at zero lag are identically 1.0.
'none' - no scaling (this is the default).
注意观察下面的测试:
s = [1 2 3]
r = xcorr(s);
r =
3.0000 8.0000 14.0000 8.0000 3.0000
当用r=xcorr(s,'unbiased')时就能得到
r =3.0000 4.0000 4.6667 4.0000 3.0000
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询