Main Content


5G antenna array described in 3GPP TR 38.901 specification


The phased.NRRectangularPanelArray System object™ creates a rectangular antenna array designed to meet the 3GPP TR 38.901 standard. This object models an antenna pattern generated by multiple panels in a rectangular layout. Each panel is a heterogeneous array consisting of co-located antenna elements. The default set of antenna elements is a pair of phased.NRAntennaElement antenna elements having +45° and -45° as the polarization slant angles. The default configuration of each panel is a 2-by-2 antenna configuration. You can also create an array using other types of elements. Elements and panels lie in the yz-plane.

To compute the response of the antenna element for specified directions:

  1. Create the phased.NRRectangularPanelArray object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?




array = phased.NRRectangularPanelArray creates an NR antenna panel array System object, array that follows the specification described in the 3GPP TR 38.901.


array = phased.NRRectangularPanelArray(Name,Value) creates an NR rectangular panel array object, array, with each specified property set to the specified value. You can specify additional name-value arguments in any order as (Name1,Value1,...,NameN,ValueN).


expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Antenna elements, specified as a 1-by-2 cell array or 1-by-1 cell array. The default value is a 1-by-2 cell array containing two phased.NRAntennaElement antenna elements with a selected polarization model of 2 – one with a –45° polarization angle and the other with a +45° polarization angle.

Sizes of element grid and panel grid, specified as a 1-by-4 vector of positive integer values. The first two entries represent the number of elements in a panel and the last two entries represent the number of panels in the array.. The default value is one panel grid with a panel size of 2-by-2 elements.

Example: [2 2 2 2]

Data Types: double

Spacing between elements and between panels, specified as a 1-by-4 positive vector. The first two entries represent the spacing between elements within the panel and the remaining values in the represent the spacing between panels in the array. Units are in meters.

Example: [0.75 0.75 1.0 1.0]

Data Types: double

Array element tapers, specified as a complex scalar or a length-N complex-valued vector of weights applied to each element in the sensor array. N is the number of elements in the array. If Taper is a scalar, identical weights are applied to each element. If Taper is a vector, each weight is applied to the corresponding array element.

Example: 1

Data Types: double
Complex Number Support: Yes




RESP = array(FREQ,ANG) returns the array voltage response, RESP, at the operating frequencies specified in FREQ and in directions specified in ANG.


The object performs an initialization the first time the object is executed. This initialization locks nontunable properties and input specifications, such as dimensions, complexity, and data type of the input data. If you change a nontunable property or an input specification, the System object issues an error. To change nontunable properties or inputs, you must first call the release method to unlock the object.

Input Arguments

expand all

Operating frequency of the antenna element, specified as a nonnegative scalar or nonnegative, real-valued 1-by-L row vector. Frequency units are in Hz.

FREQ must lie within the range of values specified by the FrequencyRange or the FrequencyVector property of the element. Otherwise, the element produces no response and the response is returned as –Inf. Element objects use the FrequencyRange property, except for phased.CustomAntennaElement, which uses the FrequencyVector property.

Example: [1e8 2e6]

Data Types: double

Azimuth and elevation angles of the response directions, specified as a real-valued 1-by-M row vector or a real-valued 2-by-M matrix, where M is the number of angular directions. Angle units are in degrees. The azimuth angle must lie in the range –180° to 180°, inclusive. The elevation angle must lie in the range –90° to 90°, inclusive.

  • If ANG is a 1-by-M vector, each element specifies the azimuth angle of the direction. In this case, the corresponding elevation angle is assumed to be zero.

  • If ANG is a 2-by-M matrix, each column of the matrix specifies the direction in the form [azimuth;elevation].

The azimuth angle is the angle between the x-axis and the projection of the direction vector onto the xy-plane. This angle is positive when measured from the x-axis toward the y-axis. The elevation angle is the angle between the direction vector and xy-plane. This angle is positive when measured toward the z-axis. See the definition of Azimuth and Elevation Angles.

Example: [110 125; 15 10]

Data Types: double

Output Arguments

expand all

Voltage response of the array, returned as a complex-valued M-by-L matrix. In this matrix, M represents the number of angles specified in ANG and L represents the number of frequencies specified in FREQ.

Data Types: double

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:


expand all

beamwidthCompute and display beamwidth of an array
collectPlaneWaveSimulate received plane waves
directivityCompute array directivity
getElementNormalNormal vectors for array elements
getElementPositionPositions of array elements
getNumElementsNumber of elements in an array
getTaperArray element tapers
isPolarizationCapableArray polarization capability
patternPlot array directivity and patterns
patternAzimuthPlot array directivity or pattern versus azimuth
patternElevationPlot array directivity or pattern versus elevation
viewArrayView array geometry
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object


collapse all

Construct a 5G antenna array where the grid is 2-by-2 and each panel is a 4-by-4 array. Each antenna element consists of two short-dipole antennas with different dipole axis directions. The antenna elements are spaced 1/2 wavelength apart and the panels are spaced 3 wavelengths apart. Plot the response pattern of the array assuming an operating frequency of 6 GHz.

c = physconst('LightSpeed');
fc = 6e9;
lambda = c/fc;
antenna1 = phased.ShortDipoleAntennaElement('AxisDirection','Z');
antenna2 = phased.ShortDipoleAntennaElement('AxisDirection','X');
array = phased.NRRectangularPanelArray('ElementSet', ...
        {antenna1, antenna2},'Size',[4, 4, 2, 2],'Spacing', ...
        [0.5*lambda, 0.5*lambda,3*lambda, 3*lambda]);

Use the Orientation property of pattern to change the orientation 80 along the x-axis, 30 along the y-axis and 60 along the z-axis.


Disable the display of local coordinates and the colorbar.


Construct a 5G antenna array where the grid is 2-by-2 and each panel is a 3-by-2 array. The antenna elements are two phased.NRAntennaElement objects having polarization angles of +45 and -45 degrees. Find the response of the array at boresight, assuming an operating frequency of 6 GHz. The elements are spaced 1/2-wavelength apart and the panels are 3-wavelengths apart.

    c = physconst('LightSpeed');
    fc = 6e9;2
ans = 2
    lambda = c/fc;
    array = phased.NRRectangularPanelArray('Size',[3, 2, 2, 2], ...
    resp = array(fc,[0;0])
resp = struct with fields:
    H: [48x1 double]
    V: [48x1 double]


[1] 5G: Study on channel model for frequencies from 0.5 to 100 GHz, 3GPP TR38.901 Version 14.0.0 Release 14.

Extended Capabilities

Introduced in R2021a