System object: phased.ArrayGain
Calculate array gain of sensor array
G = step(H,FREQ,ANG)
G = step(H,FREQ,ANG,WEIGHTS)
G = step(H,FREQ,ANG,STEERANGLE)
G = step(H,FREQ,ANG,WEIGHTS,STEERANGLE)
G = step(H,FREQ,ANG,STEERANGLE) uses STEERANGLE as the subarray steering angle. This syntax is available when you configure H so that H.Sensor is an array that contains subarrays, and H.Sensor.SubarraySteering is either 'Phase' or 'Time'.
G = step(H,FREQ,ANG,WEIGHTS,STEERANGLE) combines all input arguments. This syntax is available when you configure H so that H.WeightsInputPort is true, H.Sensor is an array that contains subarrays, and H.Sensor.SubarraySteering is either 'Phase' or 'Time'.
Note: The object performs an initialization the first time the step method is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object™ issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.
Array gain object.
Operating frequencies of array in hertz. FREQ is a row vector of length L. Typical values are within the range specified by a property of the sensor element. The element is H.SensorArray.Element, H.SensorArray.Array.Element, or H.SensorArray.Subarray.Element, depending on the type of array. The frequency range property is named FrequencyRange or FrequencyVector, depending on the type of element in the array. The element has zero response at frequencies outside that range.
Directions in degrees. ANG can be either a 2-by-M matrix or a row vector of length M.
If ANG is a 2-by-M matrix, each column of the matrix specifies the direction in the form [azimuth; elevation]. The azimuth angle must be between –180 and 180 degrees, inclusive. The elevation angle must be between –90 and 90 degrees, inclusive.
If ANG is a row vector of length M, each element specifies a direction's azimuth angle. In this case, the corresponding elevation angle is assumed to be 0.
Weights on the sensor array. WEIGHTS can be either an N-by-L matrix or a column vector of length N. N is the number of subarrays if H.SensorArray contains subarrays, or the number of elements otherwise. L is the number of frequencies specified in FREQ.
If WEIGHTS is a matrix, each column of the matrix represents the weights at the corresponding frequency in FREQ.
If WEIGHTS is a vector, the weights apply at all frequencies in FREQ.
Subarray steering angle in degrees. STEERANGLE can be a length-2 column vector or a scalar.
If STEERANGLE is a length-2 vector, it has the form [azimuth; elevation]. The azimuth angle must be between –180 and 180 degrees, and the elevation angle must be between –90 and 90 degrees.
If STEERANGLE is a scalar, it represents the azimuth angle. In this case, the elevation angle is assumed to be 0.
The array gain is defined as the signal to noise ratio (SNR) improvement between the array output and the individual channel input, assuming the noise is spatially white. You can express the array gain as follows:
In this equation:
w is the vector of weights applied on the sensor array. When you use phased.ArrayGain, you can optionally specify weights by setting the WeightsInputPort property to true and specifying the W argument in the step method syntax.
v is the steering vector representing the array response toward a given direction. When you call the step method, the ANG argument specifies the direction.
s is the input signal power.
N is the noise power.
H denotes the complex conjugate transpose.
For example, if a rectangular taper is used in the array, the array gain is the square of the array response normalized by the number of elements in the array.
Construct a uniform linear array with six elements. The array operates at 1 GHz and the array elements are spaced at one half the operating frequency wavelength. Find the array gain in decibels for the direction 45 degrees azimuth and 10 degrees elevation.
% operating frequency 1 GHz fc = 1e9; % 1 GHz wavelength lambda = physconst('LightSpeed')/fc; % construct the ULA hULA = phased.ULA('NumElements',6,'ElementSpacing',lambda/2); % construct the array gain object with the ULA as the sensor array hgain = phased.ArrayGain('SensorArray',hULA); % use step method to determine array gain at the specified % operating frequency and angle arraygain = step(hgain,fc,[45;10]); % array gain is approximately -17.93 dB