⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doa_music.m

📁 八单元线阵的DOA估计的MUSIC算法实现。可以看出music方法分辨率较高。这里用的是36度方向下的weight,自己也可以尝试其他的天线weight值。
💻 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 + -