How to optimize the antenna weight of a two-dimensional array to generate null in a specific direction

8 次查看(过去 30 天)
I have read the” Array Pattern Synthesis Part II: Optimization“,the optimization example is for one-dimensional array(ULA), and there are problems in my process of weight optimization for two-dimensional array(URA),Please give me some guidance,thanks!
N = 8;
M=8;
URA1 = phased.URA('Size',[N,M],'ArrayNormal','z');
pos = getElementPosition(URA1);
% position of elements
ang_i = [-70 -40 -20;0 0 0]; % interference angles
ang_d = [0;0]; % desired angle
Rn = sensorcov(pos,ang_i,db2pow(-40)); % Noise covariance matrix
sv_c = steervec(pos,[ang_d ang_i]); % Linear constraints
r_c = [1 zeros(size(ang_i))]'; % Desired response
w_lcmv = lcmvweights(sv_c,r_c,Rn); % LCMV weights
ang_plot = -90:0.1:90;
sv_plot = steervec(pos,ang_plot);
plcmv = plot(ang_plot,mag2db(abs(w_lcmv'*sv_plot)));
xline(ang_i,"--")
ylim([-100 0])
grid on
legend(plcmv,"LCMV - Analytic")
xlabel("Azimuth Angle (deg)")
ylabel("Beam Pattern (dB)")

回答(1 个)

Honglei Chen
Honglei Chen 2024-6-19
Your script is pretty close, you just need to set up the desired response properly. However, you could take advantage of the pattern plot to plot the pattern for a planar array.
Hope this helps,
N = 8;
M = 8;
URA1 = phased.URA('Size',[N,M],'ArrayNormal','z');
pos = getElementPosition(URA1);
% position of elements
ang_i = [-40 -20 10;10 20 -10]; % interference angles
ang_d = [0;0]; % desired angle
Rn = sensorcov(pos,ang_i,db2pow(-40)); % Noise covariance matrix
sv_c = steervec(pos,[ang_d ang_i]); % Linear constraints
r_c = [1 zeros(1,size(ang_i,2))]'; % Desired response
w_lcmv = lcmvweights(sv_c,r_c,Rn); % LCMV weights
pattern(URA1,3e8,-90:90,-90:90,'CoordinateSyste','Rectangular',...
'Type','powerdb','Weights',w_lcmv);
view(0,90);

类别

Help CenterFile Exchange 中查找有关 Array Geometries and Analysis 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by