1 简介
窄带信号的测向算法
2 完整代码
clear;
close all
w=2*pi*1800000000;%信源载波圆频率
d=0.16;%天线振元间距
c=3.0e+08;%光速
u=[5 25 45 85]*pi/180;%来波方向角
kp=1024;%快拍数
md=8;%天线振元数
nd=4;%信号源数目
snr=10;%信噪比
snr1=10^(snr/20);
bc=0.1;%空间谱峰搜索步长
for i=1:md
for m=1:nd
for k=1:kp
s(m,k)=snr1*exp(-j*2*pi*m*64*k/8192);%构成信号矩阵
no(i,k)=exp(-j*2*pi*rand(1));%构成噪声矩阵
end
t=d/c*sin(u(m));
a(i,m)=exp(-j*(i-1)*w*t);%构成方向矩阵
end
end
x=a*s+no;
%----------------------------------------------------------------
r=x*x'/kp;%构成协方差矩阵
[V,D]=eig(r);%进行特征值与特征向量分解
%----------------------------------------------------------------
for m=0:(md-1)%利用MDL准则判断信源数目
m1=m+1;
a1=0;
b1=1;
for i=m1:md
a1=a1+D((md+1)-i,(md+1)-i);
b1=b1*D((md+1)-i,(md+1)-i)^(1/(md-m));
end
a1=a1/(md-m)/b1;
mdl(md-m)=(md-m)*kp*log(a1)+0.5*m*(2*md-m+1)*log(kp);
end
amin=1000000;
for n=1:md
if mdl(n)>amin
break
end
amin=mdl(n);
md1=n;
end
n=md-md1%显示所估计出的信源数目
%----------------------------------------------------------------
for k=1:90/bc%求空间谱函数值并绘制空间谱函数图
n=k;
ta1=bc*pi*k/180;
for i=1:md
T=d/c*sin(ta1);
B(i,n)=exp(-j*(i-1)*w*T);
end
for i=1:md1
c2(i)=B(:,n)'*V(:,i);
end
pu(n)=c2*c2';
pu(n)=1/real(pu(n));
end
for i=1:90/bc
pu(i)=10*log10(pu(i));
end
q=bc:bc:90;
plot(q,pu)
%--------------------------------------------------
n=0;%扫描出谱峰值并显示
for i=2:(90/bc-1)
while (pu(i)>pu(i-1)) & (pu(i)>pu(i+1)),
n=n+1;
dd(n)=pu(i);
df(n)=i*bc;
break
end
end
m=0;
for i=1:n
if dd(i)>0
m=m+1;
s1(m)=df(i);
end
end
s1%显示所估计出的方向值
%-------------------------------------------------------------------
3 仿真结果
4 参考文献
[1]李福昌, & 赵春晖. (2003). 基于方向矩阵极分解的宽带信号测向算法. 弹箭与制导学报, 23(3), 3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。