Main Content


System object: phased.HeterogeneousConformalArray
Namespace: phased

Simulate received plane waves


Y = collectPlaneWave(H,X,ANG)
Y = collectPlaneWave(H,X,ANG,FREQ)
Y = collectPlaneWave(H,X,ANG,FREQ,C)


Y = collectPlaneWave(H,X,ANG) returns the received signals at the sensor array, H, when the input signals indicated by X arrive at the array from the directions specified in ANG.

Y = collectPlaneWave(H,X,ANG,FREQ), in addition, specifies the incoming signal carrier frequency in FREQ.

Y = collectPlaneWave(H,X,ANG,FREQ,C), in addition, specifies the signal propagation speed in C.

Input Arguments


Array object.


Incoming signals, specified as an M-column matrix. Each column of X represents an individual incoming signal.


Directions from which incoming signals arrive, 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 specifies the direction of arrival of the corresponding signal in X. Each column of ANG is in the form [azimuth; elevation]. The azimuth angle must be between –180° and 180°, inclusive. The elevation angle must be between –90° and 90°, inclusive.

If ANG is a row vector of length M, each entry in ANG specifies the azimuth angle. In this case, the corresponding elevation angle is assumed to be 0°.


Carrier frequency of signal in hertz. FREQ must be a scalar.

Default: 3e8


Propagation speed of signal in meters per second.

Default: Speed of light

Output Arguments


Received signals. Y is an N-column matrix, where N is the number of elements in the array H. Each column of Y is the received signal at the corresponding array element, with all incoming signals combined.


expand all

Simulate the received signal at an 8-element heterogeneous uniform circular array created using the phased.HeterogeneousConformalArray System object™. The signals arrive from 10° and 30° azimuth. Both signals have an elevation angle of 0°. Assume the propagation speed is the speed of light.

antenna1 = phased.CosineAntennaElement('CosinePower',1.5);
antenna2 = phased.CosineAntennaElement('CosinePower',1.8);
N = 8;
azang = (0:N-1)*360/N-180;
array = phased.HeterogeneousConformalArray('ElementPosition', ...
    [cosd(azang);sind(azang);zeros(1,N)],'ElementNormal',[azang;zeros(1,N)], ...
    'ElementSet',{antenna1,antenna2},'ElementIndices',[1 1 1 1 2 2 2 2]);
c = physconst('LightSpeed');
y = collectPlaneWave(array,randn(4,2),[10 30],c);
   0.7476 + 0.2890i   0.5378 + 0.5554i
   0.9544 - 0.8005i  -0.5059 + 1.3857i
  -2.5374 - 0.5387i  -1.3746 - 2.1411i
   1.0865 + 0.3377i   0.6977 + 0.8549i


collectPlaneWave modulates the input signal with a phase corresponding to the delay caused by the direction of arrival. The method does not account for the response of individual elements in the array.

For further details, see Van Trees [1].


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