Main Content


Array factor of sensor arrays

Since R2022a



    af = arrayfactor(pos,ang) returns the array factor af for an array of elements located at positions pos and arrival directions ang. See Element and Array Radiation and Response Patterns for a discussion of array factors and array responses.


    af = arrayfactor(pos,ang,wts) also specifies array steering weights wts.


    collapse all

    Compute the array factor for an unsteered 8-element ULA operating at 100 MHz. Elements are placed 0.4 wavelengths apart.

    freq = 100e6;
    c = physconst('LightSpeed');
    lam = c/freq;
    pos = (0:7)*0.4;
    ang = -90:90;
    af = arrayfactor(pos,ang);
    xlabel('Angle (deg)')
    ylabel('Array pattern (dB)')
    ylim([-30 20])
    title('Array Factor of Unsteered Uniform Linear Array')

    Figure contains an axes object. The axes object with title Array Factor of Unsteered Uniform Linear Array, xlabel Angle (deg), ylabel Array pattern (dB) contains an object of type line.

    Display the array beam patterns for an 8-element ULA with half-wavelength spacing. Steer the array to -30, 0, and 30 degrees.

    Set the positions of the ULA elements.

    pos = (0:7)*0.5;

    Define the steering direction weights.

    angsteer = [-30 0 30];
    wsteer = steervec(pos,angsteer);

    Compute the array factors for each steering direction for all angles.

    ang = -90:90;
    af = arrayfactor(pos,ang,wsteer);

    Plot the array factor for each steering direction.

    xlabel('Angle (deg)')
    ylabel('Beam pattern (dB)')
    ylim([-50 20])
    legend('Steer to -30 deg','Steer to 0 deg','Steer to 30 deg')

    Figure contains an axes object. The axes object with xlabel Angle (deg), ylabel Beam pattern (dB) contains 3 objects of type line. These objects represent Steer to -30 deg, Steer to 0 deg, Steer to 30 deg.

    Input Arguments

    collapse all

    Positions of the elements of a sensor array, specified as a 1-by-N vector, a 2-by-N matrix, or a 3-by-N matrix. In this vector or matrix, N represents the number of elements of the array. Each column of pos represents the coordinates of an element. If pos is a 1-by-N vector, then it represents the y-coordinate of the sensor elements of a line array. The x and z-coordinates are assumed to be zero. When pos is a 2-by-N matrix, it represents the (y,z)-coordinates of the sensor elements of a planar array. This array is assumed to lie in the yz-plane. The x-coordinates are assumed to be zero. When pos is a 3-by-N matrix, then the array can have an arbitrary shape. Sensor positions are in terms of signal wavelength.

    Example: [0,0,0; 0.1,0.4,0.3; 1,1,1]

    Data Types: double

    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. 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°. The azimuth angle is the angle between the x-axis and the projection of the arrival direction vector onto the xy plane. It is positive when measured from the x-axis toward the y-axis. The elevation angle is the angle between the arrival direction vector and xy-plane. It is positive when measured towards the z axis. If ang is a 1-by-M vector, then it represents a set of azimuth angles with the elevation angles assumed to be zero. Angle units are specified in degrees.

    Example: [45;0]

    Data Types: double

    Array weights, specified as a complex-valued N-by-1 vector or complex-valued N-by-L matrix. Each column of wts corresponds to a different set of weights for the array. L is the number of weight sets.

    Data Types: double
    Complex Number Support: Yes

    Output Arguments

    collapse all

    Array factor of sensor array, returned as a 1-by-M complex-valued vector or L-by-M complex-valued matrix. Each column contains the array factor for a different set of weights wts. Each row corresponds to one of the angles specified in ang.


    [1] Van Trees, Harry L. Detection, Estimation, and Modulation Theory. 4: Optimum Array Processing. Wiley, 2002.

    [2] Johnson, Don H. and D. Dudgeon. Array Signal Processing. Englewood Cliffs, NJ: Prentice Hall, 1993.

    [3] Van Veen, B.D. and K. M. Buckley. “Beamforming: A versatile approach to spatial filtering”

    Extended Capabilities

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

    Version History

    Introduced in R2022a