阵元间隔为半波长的均匀分布16元线阵
% %陣元間隔為半波長的均勻分布16元線陣,預成指向士arcsin((2i-1)/16)(i=l,2,…,16)的16個均勻加權常規波束,遠場有5個互
% 不相關的目標源發射信號,每個源相對于基陣的方位為30和33,且每個信號源到達基陣的信噪比相同,均為10DB,快拍數為1000.進行波
%束域方法和陣元域方法的比較。
clear all
close all
C=340; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%%聲速
num=16; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %% 陣元數
k=1000; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %% 快拍數
Bearings=[-5]; ? ? ? ? ? ? ? ? ? ? ? ? ? %入射信號方位角
d=length(Bearings); ? ? ? ? ? ? ? ? ? ? ? ? %%聲源數
D=0.1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%陣元間距
fc=1000; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%信號頻率
fs=2*fc; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%采樣頻率
snr=10; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%信噪比
e_position=[0:num-1]';
s_position=[0:d-1]';
%%波束形成
as=-1/16:1/8:3/16; ? ? ? ? ? ? ? ? ? ? ? ? ?%波束指向角
as=asin(as);
vs=exp(j*2*pi*fc*e_position*D*sin(as)/C);
w=1/num*vs'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%波束形成矩陣
%%入射信號
aa=90*[-1:0.002:1]; ? ? ? ? ? ? ? ? ? ? ? ? %從-90到90采樣1001個點
s=exp(j*pi*[1:d].'*sin(aa/180*pi)); ?
% % s=exp(j*pi*sin(aa/180*pi));?
% % s=repmat(s,[d 1]); ? ? ? ? ? ? ? ? ? ? ? ? ?%聲源信號
%%方向向量
Bearings=Bearings*pi/180;
TimeDelay=D*[0:num-1].'*sin(Bearings)/C; ? ?%線陣的延遲
A=exp(sqrt(-1)*2*pi*fc*TimeDelay); ? ? ? ? ?%方向向量
%%基陣接收信號
X=A*s; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%陣列輸出信號
X=awgn(X,snr); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%加噪聲
%%陣元域MUSIC算法
Rxx=(X*X')/k; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %協方差矩陣 ?
[EigenVectors,EigenValues]=eig(Rxx);
Lemda=diag(EigenValues); ? ? ? ? ? ? ? ? ? ?%計算矩陣特征值
[SortedLemda,Index]=sort(Lemda);
Index=flipud(Index); ? ? ? ? ? ? ? ? ? ? ? ?%將特征值降序排列
NoiseSubspace_Z(1:num,1:num-d)=EigenVectors(1:num,Index(d+1:num));%把噪聲空間分成兩部分,分別為加入信號空間的一部分和噪聲
%%在-150到150之間進行搜索
for ?i=-900:900
? ? ?az=exp(sqrt(-1)*2*pi*fc*D*[0:num-1]'*sin(i/10*pi/180)/C);
? ? ?MUSIC_Spec_Z(i+901)=az'*az/(az'*NoiseSubspace_Z*NoiseSubspace_Z'*az);
end
%波束輸出
Y=w*X; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%方位估計
%%波束域MUSIC算法
B=3; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?%波束數
Ryy=(Y*Y')/k; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? %協方差矩陣
[EigenVectors,EigenValues]=eig(Ryy);
Lemda=diag(EigenValues); ? ? ? ? ? ? ? ? ? ?%計算矩陣特征值
[SortedLemda,Index]=sort(Lemda);
Index=flipud(Index); ? ? ? ? ? ? ? ? ? ? ? ?%將特征值降序排列
NoiseSubspace(1:B,1:B-d)=EigenVectors(1:B,Index(d+1:B));%把噪聲空間分成兩部分,分別為加入信號空間的一部分和噪聲
%%在20到50之間進行搜索
for i=-150:1:50
? ? a=exp(sqrt(-1)*2*pi*fc*D*[0:num-1]'*sin((i/10)*pi/180)/C);
? ? MUSIC_Spec_B(i+151)=a'*w'*w*a/(a'*w'*NoiseSubspace*(w'*NoiseSubspace)'*a);
end
figure(1);
MUSIC_B=abs(MUSIC_Spec_B)/max(abs(MUSIC_Spec_B));
Delta1=[-15:0.1:5];
plot(Delta1,10*log10(MUSIC_B),'r'); %NonNormative ?Spatial Spectrum
xlabel('角度(度)'),ylabel('空間方位譜(DB)');
hold on
Delta=[-90:0.1:90];
MUSIC_Z=abs(MUSIC_Spec_Z)/max(abs(MUSIC_Spec_Z));
plot(Delta,10*log10(MUSIC_Z));
axis([-15 5 -60 0]);
grid on
%%畫波束
% figure(2);
% ss=exp(j*pi*e_position*sin(aa/180*pi)); ?%% ?入射信號
% plot(aa,20*log10(abs(w*ss))),xlabel('角度(度)'),ylabel('波束(DB)');
% axis([-90 90 -40 0]);
?
總結
以上是生活随笔為你收集整理的阵元间隔为半波长的均匀分布16元线阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大对比度法自聚焦
- 下一篇: 基于MATLAB的波速形成仿真