Main Content

# collectPlaneWave

Simulate received plane waves at array

## Syntax

``Y = collectPlaneWave(array,X,ang)``
``Y = collectPlaneWave(array,X,ang,freq)``
``Y = collectPlaneWave(array,X,ang,freq,c)``

## Description

example

````Y = collectPlaneWave(array,X,ang)` returns the sum `Y` of received signals `X` arriving at the sensor `array` from the directions specified in `ang`.```
````Y = collectPlaneWave(array,X,ang,freq)` also specifies the incoming signal carrier frequency `freq`.```
````Y = collectPlaneWave(array,X,ang,freq,c)` also specifies the signal propagation speed `c`.```

## Examples

collapse all

Simulate two received plane-wave random signals at a 4-element ULA. 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 and the carrier frequency of the signal is 100 MHz.

```array = phased.ULA(4); y = collectPlaneWave(array,randn(4,2),[10 30],100e6,physconst('LightSpeed'))```
```y = 4×4 complex 0.7430 - 0.3705i 0.8433 - 0.1314i 0.8433 + 0.1314i 0.7430 + 0.3705i 0.8418 + 0.4308i 0.5632 + 0.1721i 0.5632 - 0.1721i 0.8418 - 0.4308i -2.4817 + 0.9157i -2.6683 + 0.3175i -2.6683 - 0.3175i -2.4817 - 0.9157i 1.0724 - 0.4748i 1.1895 - 0.1671i 1.1895 + 0.1671i 1.0724 + 0.4748i ```

## Input Arguments

collapse all

Phased array, specified as a Phased Array System Toolbox™ System object.

Incoming signals in each direction, specified as a P-by-M complex-valued matrix. M is the number of signals impinging on the array. Each column of `X` represents an individual incoming signal. P is the number of signal samples. Each signal is assumed to arrive from the direction specified by the `ang` argument.

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]`. 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. Angle units are in degrees.

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. Units are in Hz.

Data Types: `double`

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

Example: `physconst('LightSpeed')`

Data Types: `double`

## Output Arguments

collapse all

Combined received signals at each array element, returned as a P-by-N complex-valued matrix where N is the number of array elements. Each column of `Y` contains the combined received signals at the corresponding array element. P is the number of signal samples.

Data Types: `double`
Complex Number Support: Yes

## Algorithms

The `collectPlaneWave` modulates a signal by a phase delay caused by the direction of arrival. This is called the phase-shift approximation. The method does not account for the response of individual elements in the array.

For further details, see Van Trees [1] .

## References

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

## Version History

Introduced in R2021a