如何从带回波的信号中用自相关函数算出延迟,原理加MATLAB程序.x[n]为原信号(没有回波),回波y[n]=x[n]+a*x[n-N1]+b*x[n-N2].现在a,b,N1,N2都不清楚,有一种方法可以用y[n]的自相关函数估算出a,b,N1,N2来.
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 12:12:40
如何从带回波的信号中用自相关函数算出延迟,原理加MATLAB程序.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程序.
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分全拿出来了,课程设计要用,救急!
如何从带回波的信号中用自相关函数算出延迟,原理加MATLAB程序.x[n]为原信号(没有回波),回波y[n]=x[n]+a*x[n-N1]+b*x[n-N2].现在a,b,N1,N2都不清楚,有一种方法可以用y[n]的自相关函数估算出a,b,N1,N2来.
自相关函数是描述随机信号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