資源簡介
遠場 近場 聚焦波束形成(beamforing) 矢量水聽器 常規波束形成 MVDR波束形成
代碼片段和文件信息
%------------矢量水聽器??近場?遠場?常規波束形成?MVDR-----0722-----
clc
clear?all
close?all
%-----------信號模型--------------
M=12;
N=1024;
f0=1000;
fs=10*f0;
c=1500;
lamda=c/f0;
w=2*pi*f0;
k=w/c;
d=lamda/2;
t=0:N-1;
snr=input(‘信噪比snr=‘);
theta=input(‘入射角度theta=‘);
theta=theta*pi/180;
A=sqrt(2*10^(snr/10));
s=A*exp(-j*w*t/fs);
%----------遠場?波束形成--------------
for?m=1:M
????Sp(m:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))+randn(size(t))/3;
????Sx(m:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))*cos(theta)+randn(size(t))/3;
????Sy(m:)=A*exp(-j*(w*t/fs+k*(m-1)*d*cos(theta)))*sin(theta)+randn(size(t))/3;
end
S=[Sp.‘Sx.‘Sy.‘];
R=cov(S);
theta1=-180:180;
for?i=1:length(theta1)
????for?m=1:M
????????Wp(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180));
????????Wx(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180))*cos(theta1(i)*pi/180);
????????Wy(m)=exp(-j*k*(m-1)*d*cos(theta1(i)*pi/180))*sin(theta1(i)*pi/180);
????end
????W=[WpWxWy];
????
????P(i)=W*R*W‘;
????Pm(i)=1/(W*(R^-1)*W‘);
end
%-----------歸一化-----------------
pp=max(abs(P));
P=20*log10(P/pp);
ppm=max(abs(Pm));
Pm=20*log10(Pm/ppm);
%----------------------------------
figure
plot(theta1P);
title(‘遠場?常規算法波束形成‘)
xlabel(‘x/角度°‘)
ylabel(‘y/dB‘)
%-----------------------------------
figure
plot(theta1Pm);
title(‘遠場?MVDR算法波束形成‘)
xlabel(‘x/角度°‘)
ylabel(‘y/dB‘)
%------------------------------------
figure
plot(theta1P‘r-‘theta1Pm‘b:‘);
title(‘遠場?常規與MVDR算法波束形成‘);
xlabel(‘x/角度°‘);
ylabel(‘y/dB‘);
legend(‘常規算法‘‘MVDR算法‘);
%----------近場?波束形成--------------
%?x0=15;
%?y0=20;
x0=input(‘目標位置x0=‘);
y0=input(‘目標位置y0=‘);
for?m=1:M
????theta2(m:)=atan(y0/(x0-(m-1)*d));
????r(m:)=sqrt(y0^2+((x0-(m-1)*d))^2);
????SMp(m:)=A*exp(-j*(w*t/fs+k*r(m:)))+randn(size(t))/3;
????SMx(m:)=A*exp(-j*(w*t/fs+k*r(m:))).*cos(theta2(m:))+randn(size(t))/3;
????SMy(m:)=A*exp(-j*(w*t/fs+k*r(m:))).*sin(theta2(m:))+randn(size(t))/3;
end
SM=[SMp.‘SMx.‘SMy.‘];
RM=cov(SM);
x=-30:0.5:30;
y=-30:0.5:30;
for?xx=1:length(x)
????
???hwait=waitbar(0‘請等待>>>>>>>>‘);
???step=length(x)/100;
????if?length(x)-xx<=5
????????waitbar(xx/length(x)hwait‘即將完成‘);
?????????pause(0.1);
???????else
????????PerStr=fix(xx/step);
????????str=[‘正在運行中‘num2str(PerStr)‘%‘];
????????waitbar(xx/length(x)hwaitstr);
????????pause(0.1);
????end
??
????close(hwait);
????
????
????for?yy=1:length(y)
????????for?m=1:M
??????????theta3=atan(y(yy)/(x(xx)-(m-1)*d));
??????????r2=sqrt(y(yy)^2+((x(xx)-(m-1)*d))^2);
??????????WMp(m)=exp(-j*k*r2);
??????????WMx(m)=exp(-j*k*r2)*cos(theta3);
??????????WMy(m)=exp(-j*k*r2)*sin(theta3);
????????end
????????WM=[WMpWMxWMy];
????????PP(xxyy)=WM*RM*WM‘;
????????PPm(xxyy)=1/(WM*(RM^-1)*WM‘);
????end
end
?
size(xx)
size(yy)
size(PP)
figure
imagesc(xyabs(PP‘))??
colorbar;
colormap?gray;?
title(‘近場?常規算法波束形成‘)
xlabel(‘x/米‘);
ylabel(‘y/米‘);
axis?xy;
figure
imagesc(xyabs(PPm‘))
title(‘近場?MVDR算法波束形成‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3253??2014-07-25?12:26??vectorbeamforing.m
-----------?---------??----------?-----??----
?????????????????3253????????????????????1
評論
共有 條評論