Main Content


Simulate received plane waves at array

Since R2021a



    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.


    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


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


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

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2021a