请帮我看看广义互相关时延估计程序
用多个正弦产生仿真信号,两个阵元接受到信号后,估计两信号的延迟
SN1=20; %信噪比
nn=4096; %信号长度
tt=1:nn;
fs=1000;
S=3*sin(2*pi*17*tt/fs)+2.5*sin(2*pi*35*tt/fs)+1.5*sin(2*pi*51*tt/fs)+sin(2*pi*102*tt/fs); %采样频率为1000
Ps=S*S'/nn;
ps=diag(Ps);
refp=2*10.^(SN1/10);
tmp=sqrt(refp./ps);
SS=diag(tmp)*S;
%SS=SS+randn(size(SS)); 。。。。。。。。。1
for j=1:nn
S2(j+549)=1/dist(2)*SS(j); %传送到阵2的时候延迟了549个点
end
%S2=S2+randn(size(S2));。。。。。。。。。。2
for j=1:nn
S3(j+580)=1/dist(3)*SS(j); %信号传送到阵3为延迟了580个点
end%
%S3=S3+randn(size(S3));。。。。。。。。。。。。3
n=200; %取信号的长度不超过200ms
m=580-549;
SS2=[S2(tao(2)+1:tao(2)+1+n),zeros(1,m)];
SS3=[zeros(1,m),S3(tao(3)+1:tao(3)+1+n)]; %做相关的信号
SS2=[SS2,zeros(1,length(SS2))];
SS3=[zeros(1,length(SS3)),SS3];
fx2=fft(SS2);fx3=fft(SS3);
Pxy=fx2.*conj(fx3)./(abs(fx2).*abs(fx3)+eps); 。。。。。。4
R=ifft(Pxy);
R=real(R);
c=max(abs(R));
a=find(abs(R)==c) %找出最大点
m=(a-length(R)/2)*1/fs %换算出信号的延迟时间
figure(3)
plot(R)
信号2与3的时延为0。0306秒,我现在如果把噪声加在 1 处的时候m可以得比较接近的值,但是如果把噪声加在2 和 3 处就不行,而且每次估计的 m值差别变化很大,但我认为在 2 3 处加噪声比较符合逻辑,因为每个阵的噪声应该是不相关的 ,请问是什么原因? 噪声的影响能有这样大吗? 另外我的采样频率是否有问题?
另外 4 处求的是两信号的互功率谱,请问互功率谱和功率谱密度的区别,如果去掉 4 处的分母,可以吗?
---------------------------------------
我对于dist函数不熟悉,用了它以后,在SS2和SS3中前500多个数都为0。我把这部分取消了,程序为
SN1=20; %信噪比
nn=4096; %信号长度
tt=1:nn;
fs=1000;
S=3*sin(2*pi*17*tt/fs)+2.5*sin(2*pi*35*tt/fs)+1.5*sin(2*pi*51*tt/fs)+sin(2*pi*102*tt/fs); %采样频率为1000
Ps=S*S'/nn;
ps=diag(Ps);
refp=2*10.^(SN1/10);
tmp=sqrt(refp./ps);
SS=diag(tmp)*S;
SS=SS+randn(size(SS)); %。。。。。。。。。1
S2=SS+randn(size(SS)); %。。。。。。。。。。2
S3=SS+randn(size(SS)); %。。。。。。。。。。。。3
n=200; %取信号的长度不超过200ms
m=580-549;
tao(2)=0; tao(3)=0;
SS2=[S2(tao(2)+1:tao(2)+1+n),zeros(1,m)];
SS3=[zeros(1,m),S3(tao(3)+1:tao(3)+1+n)]; %做相关的信号
SS2=[SS2,zeros(1,length(SS2)-1)];
SS3=[zeros(1,length(SS3)-1),SS3];
fx2=fft(SS2);fx3=fft(SS3);
Pxy=fx2.*conj(fx3)./(abs(fx2).*abs(fx3)+eps); %。。。。。。4
R=ifft(Pxy);
R=real(R);
c=max(abs(R));
a=find(abs(R)==c) %找出最大点
Rl2=fix(length(R)/2);
m=(a-(Rl2+2))/fs %换算出信号的延迟时间
figure(3);
time=(-Rl2:Rl2)/fs;
plot(time,R); grid;
对楼主谈到的,在1,2,3中都增加了噪声,一样能得到很好的峰值。见下图,延迟时间是-0.031
同时对4是这样的,若单独求互谱,应为
Pxy=fx2.*conj(fx3)
可楼主是用SCOT方法求广义相关,SCOT方法为
Rxy=Pxy./sqrt(Pxx.*Pyy)
楼主的关系4实际上是把上两式合并在一起。所以分母不能去掉,去掉了就不是求广义相关函数了。
------------------------------------------
文章评论(0条评论)
登录后参与讨论