phased.NRRectangularPanelArray

5G antenna array described in 3GPP TR 38.901 specification

Description

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.

Creation

Syntax

``array = phased.NRRectangularPanelArray``
``array = phased.NRRectangularPanelArray(Name,Value)``

Description

example

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

example

````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`).```

Properties

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.

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

Usage

Syntax

``RESP = array(FREQ,ANG)``

Description

example

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

Note

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:

`release(obj)`

expand all

 `beamwidth` Compute and display beamwidth of an array `collectPlaneWave` Simulate received plane waves `directivity` Compute array directivity `getElementNormal` Normal vectors for array elements `getElementPosition` Positions of array elements `getNumElements` Number of elements in an array `getTaper` Array element tapers `isPolarizationCapable` Array polarization capability `pattern` Plot array directivity and patterns `patternAzimuth` Plot array directivity or pattern versus azimuth `patternElevation` Plot array directivity or pattern versus elevation `viewArray` View array geometry
 `step` Run System object algorithm `release` Release resources and allow changes to System object property values and input characteristics `reset` Reset internal states of System object

Examples

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]); pattern(array,fc,'ShowArray',true)```

Use the `Orientation` property of `pattern` to change the orientation $8{0}^{\circ }$ along the x-axis, $3{0}^{\circ }$ along the y-axis and $6{0}^{\circ }$ along the z-axis.

`pattern(array,fc,'Orientation',[80;30;60],'ShowArray',true)`

Disable the display of local coordinates and the colorbar.

`pattern(array,fc,'ShowLocalCoordinate',false,'ShowColorBar',false)`

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], ... 'Spacing',[0.5*lambda,0.5*lambda,3*lambda,3*lambda]); resp = array(fc,[0;0])```
```resp = struct with fields: H: [48x1 double] V: [48x1 double] ```

References

[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