collectPlaneWave

System object: phased.UCA
Package: phased

Simulate received plane waves

Syntax

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

Description

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

expand all

Uniform circular array specified as a phased.UCA System object.

Example: H = phased.UCA();

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

Example: [1,5;2,10;3,10]

Data Types: double
Complex Number Support: Yes

Arrival directions of incoming signals, specified as a 1-by-M vector or a 2-by-M matrix, where M is the number of incoming signals. Each column specifies the direction of arrival of the corresponding signal in X. If ANG is a 2-by-M matrix, each column specifies the direction in azimuth and elevation of the incoming signal [az;el]. Angular units are in degrees. The azimuth angle must lie between –180° and 180° and the elevation angle must lie between –90° and 90°.

If ANG is a 1-by-M vector, then each entry represents a set of azimuth angles, with the elevation angles assumed to be zero.

The azimuth angle is the angle between the x-axis and the projection of the arrival direction vector onto the xy plane. When measured from the x-axis toward the y-axis, the azimuth angle is positive.

The elevation angle is the angle between the arrival direction vector and the xy-plane. When measured toward the z axis, the elevation angle is positive.

Example: [20,30;15,25]

Data Types: double

Signal carrier frequency, specified as a positive scalar in hertz.

Data Types: double

Signal propagation speed, specified as a positive scalar in meters per second.

Example: physconst('LightSpeed')

Data Types: double

Output Arguments

expand all

Received signals, returned as an N-column complex-valued row vector. The quantity N is the number of elements in the array. Each column of Y contains the combined received signals at the corresponding array element.

Examples

expand all

Create a random signal arriving at a 5-element UCA from 10 degrees azimuth and 30 degrees azimuth. Both signals have an elevation angle of 0 degrees. Assume the propagation speed is the speed of light and the carrier frequency of the signal is 100 MHz. The signals are two random noise signals of three samples each.

sUCA = phased.UCA('NumElements',5,'Radius',2.0);
y = collectPlaneWave(sUCA,randn(3,2),[10 30],100e6,...
    physconst('LightSpeed'));
disp(y)
  Columns 1 through 4

  -0.8817 + 1.0528i   1.0037 - 0.3636i  -1.0579 - 0.8531i  -1.0698 + 0.5187i
  -1.6512 + 1.3471i   1.7358 + 0.7662i  -1.2932 - 1.6792i  -1.0279 + 1.6997i
   2.5071 - 2.4424i  -2.7270 - 0.2435i   2.4009 + 2.4977i   2.1808 - 2.1178i

  Column 5

  -0.6388 - 0.9769i
  -1.8283 - 0.7336i
   2.3743 + 1.8105i

Algorithms

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 [1].

References

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

Introduced in R2015a