Main Content

step

System object: phased.WidebandCollector
Namespace: phased

Collect signals

Syntax

Y = step(H,X,ANG)
Y = step(H,X,ANG,LAXES)
Y = step(H,X,ANG,WEIGHTS)
Y = step(H,X,ANG,STEERANGLE)
Y = step(H,X,ANG,LAXES,WEIGHTS,STEERANGLE)

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.

Y = step(H,X,ANG) collects signals X arriving from directions ANG. The collection process depends on the Wavefront property of H, as follows:

  • If Wavefront has the value 'Plane', each collecting element collects all the far field signals in X. Each column of Y contains the output of the corresponding element in response to all the signals in X.

  • If Wavefront has the value 'Unspecified', each collecting element collects only one impinging signal from X. Each column of Y contains the output of the corresponding element in response to the corresponding column of X. The 'Unspecified' option is available when the Sensor property of H does not contain subarrays.

Y = step(H,X,ANG,LAXES) uses LAXES as the local coordinate system axes directions. This syntax is available when you set the EnablePolarization property to true.

Y = step(H,X,ANG,WEIGHTS) uses WEIGHTS as the weight vector. This syntax is available when you set the WeightsInputPort property to true.

Y = step(H,X,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'.

Y = step(H,X,ANG,LAXES,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 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

Collector object.

X

Arriving signals. Each column of X represents a separate signal. The specific interpretation of X depends on the Wavefront property of H.

Wavefront Property ValueDescription
'Plane'Each column of X is a far field signal.
'Unspecified'Each column of X is the signal impinging on the corresponding element. In this case, the number of columns in X must equal the number of collecting elements in the Sensor property.
  • If the EnablePolarization property value is set to false, X is a matrix. The number of columns of the matrix equals the number of separate signals.

    The size of the first dimension of the input matrix can vary to simulate a changing signal length. A size change can occur, for example, in the case of a pulse waveform with variable pulse repetition frequency.

  • If the EnablePolarization property value is set to true, X is a row vector of MATLAB® struct type. The dimension of the struct array equals the number of separate signals. Each struct member contains three column-vector fields, X, Y, and Z, representing the x, y, and z components of the polarized wave vector signals in the global coordinate system.

    The size of the first dimension of the matrix fields within the struct can vary to simulate a changing signal length such as a pulse waveform with variable pulse repetition frequency.

ANG

Incident directions of signals, specified as a two-row matrix. Each column specifies the incident direction of the corresponding column of X. Each column of ANG has the form [azimuth; elevation], in degrees. The azimuth angle must be between –180 and 180 degrees, inclusive. The elevation angle must be between –90 and 90 degrees, inclusive.

LAXES

Local coordinate system. LAXES is a 3-by-3 matrix whose columns specify the local coordinate system's orthonormal x, y, and z axes, respectively. Each axis is specified in terms of [x;y;z] with respect to the global coordinate system. This argument is only used when the EnablePolarization property is set to true.

WEIGHTS

Vector of weights. WEIGHTS is a column vector of length M, where M is the number of collecting elements.

Default: ones(M,1)

STEERANGLE

Subarray steering angle, specified as a length-2 column vector. The vector has the form [azimuth; elevation], in degrees. The azimuth angle must be between –180 and 180 degrees, inclusive. The elevation angle must be between –90 and 90 degrees, inclusive.

Output Arguments

Y

Collected signals. Each column of Y contains the output of the corresponding element. The output is the response to all the signals in X, or one signal in X, depending on the Wavefront property of H.

Examples

expand all

Use the phased.WidebandCollector System object™ to construct a signal arriving at a single isotropic antenna from 10° azimuth and 30° elevation.

antenna = phased.IsotropicAntennaElement;
collector = phased.WidebandCollector('Sensor',antenna);
x = [1;0;-1];
incidentAngle = [10;30];
y = collector(x,incidentAngle);
disp(y)
   1.0000 + 0.0000i
   0.0000 + 0.0000i
  -1.0000 - 0.0000i

Use the wideband collector to construct the signal impinging upon a 5-element ULA of isotropic antennas from 10 degrees azimuth and 30 degrees elevation.

array = phased.ULA('NumElements',5);
collector = phased.WidebandCollector('Sensor',array);
x = [1;1;1];
incidentAngle = [10;30];
y = collector(x,incidentAngle);
disp(y)
  -0.9997 + 0.0102i  -0.0051 - 0.9999i   1.0000 + 0.0000i  -0.0051 + 1.0001i  -1.0002 - 0.0102i
  -0.9999 + 0.0102i  -0.0051 - 1.0000i   1.0000 + 0.0000i  -0.0051 + 1.0000i  -0.9999 - 0.0102i
  -1.0002 + 0.0102i  -0.0051 - 1.0001i   1.0000 - 0.0000i  -0.0051 + 0.9999i  -0.9997 - 0.0102i

Collect three signals incoming into a 3-element array of isotropic antenna elements. Each antenna collects a separate input signal from a separate direction.

array = phased.ULA('NumElements',3);
collector = phased.WidebandCollector('Sensor',array,...
    'Wavefront','Unspecified');
rng default
x = rand(10,3);
incidentAngles = [10 20 45; 0 5 2];
y = collector(x,incidentAngles);
disp(y)
   0.8147 + 0.0000i   0.1576 + 0.0000i   0.6557 - 0.0000i
   0.9058 + 0.0000i   0.9706 + 0.0000i   0.0357 + 0.0000i
   0.1270 - 0.0000i   0.9572 + 0.0000i   0.8491 - 0.0000i
   0.9134 - 0.0000i   0.4854 + 0.0000i   0.9340 - 0.0000i
   0.6324 + 0.0000i   0.8003 + 0.0000i   0.6787 - 0.0000i
   0.0975 - 0.0000i   0.1419 + 0.0000i   0.7577 - 0.0000i
   0.2785 + 0.0000i   0.4218 - 0.0000i   0.7431 - 0.0000i
   0.5469 - 0.0000i   0.9157 - 0.0000i   0.3922 - 0.0000i
   0.9575 + 0.0000i   0.7922 + 0.0000i   0.6555 + 0.0000i
   0.9649 + 0.0000i   0.9595 + 0.0000i   0.1712 - 0.0000i

Algorithms

If the Wavefront property value is 'Plane', phased.WidebandCollector does the following for each plane wave signal:

  1. Decomposes the signal into multiple subbands.

  2. Uses the phase approximation of the time delays across collecting elements in the far field for each subband.

  3. Regroups the collected signals in all the subbands to form the output signal.

If the Wavefront property value is 'Unspecified', the object collects each channel independently.

For further details, see [1].

References

[1] Van Trees, H. Optimum Array Processing. New York: Wiley-Interscience, 2002.