step

System object: phased.PartitionedArray
Package: phased

Output responses of subarrays

Description

Note

Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.

example

RESP = step(H,FREQ,ANG,V) returns the responses RESP of the subarrays in the array, at operating frequencies specified in FREQ and directions specified in ANG. The phase center of each subarray is at its geometric center. V is the propagation speed. The elements within each subarray are connected to the subarray phase center using an equal-path feed.

RESP = step(H,FREQ,ANG,V,STEERANGLE) uses STEERANGLE as the subarray’s steering direction. This syntax is available when you set the SubarraySteering property to either 'Phase' or 'Time'.

example

RESP = step(H,FREQ,ANG,V,WS) uses WS as the subarray element weights. This syntax is available when you set the SubarraySteering property to 'Custom'.

Note

The object performs an initialization the first time the object 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.

Input Arguments

H

Partitioned array object.

FREQ

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 H.Array.Element. That 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.

ANG

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.

V

Propagation speed in meters per second. This value must be a scalar.

STEERANGLE

Subarray steering direction. STEERANGLE can be either a 2-element column vector or a scalar.

If STEERANGLE is a 2-element column vector, it has 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 STEERANGLE is a scalar, it specifies the direction’s azimuth angle. In this case, the elevation angle is assumed to be 0.

WS

Subarray element weights

Subarray element weights, specified as a complex-valued NSE-by-N matrix or 1-by-N cell array where N is the number of subarrays.

Subarrays do not have to have the same dimensions and sizes. In this case, you specify subarray weights as

  • an NSE-by-N matrix, where NSE is the number of elements in the largest subarray. The first Q entries in each column are the element weights for the subarray where Q is the number of elements in the subarray.

  • a 1-by-N cell array. Each cell contains a column vector of weights for the corresponding subarray. The column vectors have lengths equal to the number of elements in the corresponding subarray.

Dependencies

To enable this argument, set the SubarraySteering to 'Custom'.

Output Arguments

RESP

Voltage responses of the subarrays of a phased array. The output depends on whether the array supports polarization or not.

  • If the array is not capable of supporting polarization, the voltage response, RESP, has the dimensions N-by-M-by-L. The size N represents the number of subarrays in the phased array, M represents the number of angles specified in ANG, and L represents the number of frequencies specified in FREQ. For a particular subarray, each column of RESP contains the responses of the subarray for the corresponding direction specified in ANG. Each of the L pages of RESP contains the responses of the subarrays for the corresponding frequency specified in FREQ.

  • If the array is capable of supporting polarization, the voltage response, RESP, is a MATLAB® struct containing two fields, RESP.H and RESP.V. The field RESP.H represents the array’s horizontal polarization response while RESP.V represents the array’s vertical polarization response. Each field has the dimensions N-by-M-by-L. The size N represents the number of subarrays in the phased array, M represents the number of angles specified in ANG, and L represents the number of frequencies specified in FREQ. For a particular subarray, each column of RESP contains the responses of the subarray for the corresponding direction specified in ANG. Each of the L pages of RESP contains the responses of the subarrays for the corresponding frequency specified in FREQ.

Examples

expand all

Calculate the response at boresight of a 4-element ULA partitioned into two 2-element ULAs.

Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent step syntax. For example, replace myObject(x) with step(myObject,x).

Set up the partitioned array.

hula = phased.ULA('NumElements',4,'ElementSpacing',0.5);
partitionedarray = phased.PartitionedArray('Array',hula,...
   'SubarraySelection',[1 1 0 0;0 0 1 1]);

Calculate the response of the subarrays at boresight. Assume the operating frequency is 1 GHz and the propagation speed is the speed of light.

resp = partitionedarray(1.0e9,[0;0],physconst('Lightspeed'))
resp = 2×1

     2
     2

Create a partitioned URA array with three subarrays of different sizes. The subarrays have 8, 16, and 32 elements. Use different sets of subarray element weights for each subarray.

Create a 4-by-56 element URA.

antenna = phased.IsotropicAntennaElement;
fc = 300e6;
c = physconst('LightSpeed');
lambda = c/fc;
n1 = 2^3;
n2 = 2^4;
n3 = 2^5;
nrows = 4;
ncols = n1 + n2 + n3;
array = phased.URA('Element',antenna,'Size',[nrows,ncols]);

Select the three subarrays by setting the selection matrix.

sel1 = zeros(nrows,ncols);
sel2 = sel1;
sel3 = sel1;
sel = zeros(3,nrows*ncols);
for r = 1:nrows
    sel1(r,1:n1) = 1;
    sel2(r,(n1+1):(n1+n2)) = 1;
    sel3(r,((n1+n2)+1):ncols) = 1;
end
sel(1,:) = sel1(:);
sel(2,:) = sel2(:);
sel(3,:) = sel3(:);

Create the partitioned array.

partarray = phased.PartitionedArray('Array',array, ...
    'SubarraySelection',sel,'SubarraySteering','Custom');
viewArray(partarray,'ShowSubarray','All');

Set weights for each subarray and get the response of each subarray. Put the weights in a cell array.

wts1 = ones(nrows*n1,1);
wts2 = 1.5*ones(nrows*n2,1);
wts3 = 3*ones(nrows*n3,1);
resp = partarray(fc,[30;0],c,{wts1,wts2,wts3})
resp = 3×1 complex

   0.0246 + 0.0000i
   0.0738 - 0.0000i
   0.2951 - 0.0000i