📄 doa_music.m
字号:
%八单元线阵的DOA估计的MUSIC算法实现。可以看出music方法分辨率较高。自己也可以尝试其他的天线weight值。
%此weight为36度方向下的weight
weight=[1,-0.2723-0.9622i,-0.8517+0.524i,0.7361+0.6768i,0.4508-0.8926i,-0.9816-0.1907i,0.0838+0.9965i,0.936-0.3520i]';
%************************** 一般方法 *************************
lamd=(3*10^8)/(1800*10^6);
radius=1*lamd/2;
theta=linspace(0,2*pi*(1-1/360),360);
r=sqrt(-1)*2*pi*radius/lamd;
num_of_antenna=8;
for ui=1:length(theta)
for ai=1:num_of_antenna
ar(ai,ui)=exp(r*(ai-1)*sin(theta(ui)));
end
end
ante=(weight(:)')*ar;
x=abs([ ante(1:360) ]);
for di=1:360
y(di)=log10(x(di)^2)*10;
if y(di)<0
y(di)=0;
end
end
y=[ y(91:270) zeros(1,180) ];
xax=linspace(0,2*pi,360);
figure(1)
subplot(2,1,1);polar(xax,y);
%************************** MUSIC方法*************************
K=1;M=8;x=[0:M-1]';
summ=zeros(8);
summ=summ+weight*weight';
[u,s,v]=svd(summ);
un=u(:,1:K);
vn=u(:,K+1:M);
vv=diag(ones(M,1))- un*un';
fa=[1:1:180]';
pr=zeros(1,length(fa));
for time=1:size(fa,1)
fa2(time)=fa(time)/180*pi;
arr_temp=(x.*cos(fa2(time)))*pi;
ar=exp(sqrt(-1)*arr_temp);
% arr_temp=cos(fa2(time)-pi*x/4)*2*pi*0.62; %适用于圆阵
% ar=exp(-sqrt(-1)*arr_temp); %适用于圆阵
pr(time)=abs((ar'*ar)/(ar'*vv*ar));
end
figure(1);subplot(2,1,2);
xax=linspace(0,2*pi,360);
polar(xax,[log(pr)/10 zeros(1,180)],'r-');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -