Weights for minimum-variance array pattern synthesis
Compute Optimized ULA Beamforming Weights
Compute optimized beamforming weights of a 31-element half-wavelength spacing ULA in the direction of degree in azimuth. Design the array to keep sidelobe levels less than -23 dB.
Create the optimized weights.
N = 31; pos = (0:N-1)*0.5; sll = -23; wts = minvarweights(pos,-30,MaskSidelobeLevel=sll);
Apply the optimized weights and display the array pattern from to azimuth.
az = -90:.25:90; pat_opt = arrayfactor(pos,az,wts); plot(az,mag2db(abs(pat_opt))) xlabel('Azimuth Angle (deg)') ylabel('Beam Pattern (dB)') xlim([-90,90])
Optimized Tapered ULA Weights
Design an array to have a tapered beampattern, The array is a 51-element half-wavelength spacing ULA steered in the direction of in azimuth. The pattern synthesis goal is to achieve sidelobe levels smaller than a tapered mask decreasing linearly from -18 dB to -55 dB at . Place nulls at , , and azimuth angle.
N = 51; pos = (0:N-1)*0.5; ANGmainBeam = 25; angn = [-35 -45 40]; angm = [-90:.2:22 27:0.2:90]; sllm = [linspace(-55,-18,length(-90:.2:22)) ... linspace(-18,-55,length(27:.2:90))]; wts = minvarweights(pos,ANGmainBeam,'MaskAngle',angm, ... 'MaskSidelobeLevel',sllm,'NullAngle',angn);
Apply optimized weights and display the array pattern from to in azimuth.
az = -90:.25:90; pat_opt = arrayfactor(pos,az,wts); plot(az,mag2db(abs(pat_opt))) axis([-90 90 -125 5]) xlabel('Azimuth Angle (deg)') ylabel('Beam Pattern (dB)')
Verify that nulls are placed at , , and azimuth angle.
cov — Sensor spatial covariance matrix
eye(N) (default) | N-by-N complex-valued matrix
Sensor spatial covariance matrix, specified as an N-by-N complex-valued matrix. N is the number of array sensor elements.
Complex Number Support: Yes
angm — Mask angles
 (default) | real-valued 1-by-K vector | real-valued 2-by-K matrix
Angles at which mask sidelobe levels are defined, specified as a real-valued
1-by-K vector or a real-valued 2-by-K matrix
where K is the number of mask sidelobe levels. If
angm is a 1-by-K vector, then it contains the
azimuth angles of the mask directions. If
angm is a
2-by-K matrix, each column specifies the direction in the form
[az;el]. Angle units are in degrees.
sllm — Maximum allowable mask sidelobe levels
non-positive scalar (default) | non-positive real-valued 1-by-K vector
Maximum allowable mask sidelobe levels, specified as a non-positive scalar or non-positive real-valued 1-by-K vector. K is the number of mask sidelobe levels. Sidelobe levels are always less then or equal to zero.
sllmis a scalar, then it contains a uniform mask for all sidelobe levels and
angmmust be empty.
sllmis a 1-by-K vector, then
angmmust have the same number of columns; and
sllmcontains the mask sidelobe levels for corresponding mask angles,
sllm vector means that there are no
constraints on the sidelobe levels. Units are in dB.
angn — Null direction angles
 (default) | real-valued 1-by-P vector | real-valued 2-by-P matrix
Null direction angles, specified as either a 1-by-P vector or a
2-by-P matrix where P is the number of null
angn is a 1-by-P vector, then it
contains only the azimuth angles of directions. If
angn is a
2-by-P matrix, each column specifies the null direction in the form
[az; el]. Angle units are in degrees.
wts — Beamformer weights
N-by-1 complex-valued vector
Beamformer weights, returned as a complex-valued N-by-1 vector. N represents the number of sensor elements of the array.
 Lebret, H., and S. Boyd. “Antenna Array Pattern Synthesis via Convex Optimization.” IEEE Transactions on Signal Processing, vol. 45, no. 3, Mar. 1997, pp. 526–32. DOI.org (Crossref), https://doi.org/10.1109/78.558465.
 Golbon-Haghighi, Mohammad-Hossein, et al. “Design of a Cylindrical Crossed Dipole Phased Array Antenna for Weather Surveillance Radars.” IEEE Open Journal of Antennas and Propagation, vol. 2, 2021, pp. 402–11. DOI.org (Crossref), https://doi.org/10.1109/OJAP.2021.3059471.
Introduced in R2022b