Note: This page has been translated by MathWorks. Please click here

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

**MathWorks Machine Translation**

The automated translation of this page is provided by a general purpose third party translator tool.

MathWorks does not warrant, and disclaims all liability for, the accuracy, suitability, or fitness for purpose of the translation.

Generalized sidelobe canceller

**Library:**Phased Array System Toolbox / Beamforming

The GSC Beamformerblock implements a generalized sidelobe cancellation (GSC) beamformer. A GSC beamformer splits an arrays incoming signals and sends them through a conventional beamformer path and a sidelobe canceling path. The algorithm first presteers the array to the beamforming direction and then adaptively chooses filter weights to minimize power at the output of the sidelobe canceling path. The algorithm uses least mean squares (LMS) to compute the adaptive weights. The final beamformed signal is the difference between the outputs of the two paths.

`X`

— Input signalInput signal, specified as an *M*-by-*N* matrix,
where *M* is the number of samples in the data, and *N* is
the number of array elements.

The size of the first dimension of this input matrix can vary to simulate a changing signal length, such as a pulse waveform with variable pulse repetition frequency.

**Data Types: **`double`

**Complex Number Support: **Yes

`Ang`

— Beamforming directionBeamforming direction, specified as a *2*-by-*L* real-valued
matrix, where *L* is the number of beamforming directions.
Each column takes the form of `[AzimuthAngle;ElevationAngle]`

.
Angle units are in degrees. The azimuth angle must lie between –180°
and 180°, inclusive, and the elevation angle must lie between
–90° and 90°, inclusive. Angles are defined with
respect to the local coordinate system of the array.

To enable this port, set the **Source of beamforming
direction** parameter to `Input port`

.

**Data Types: **`double`

`Y`

— Beamformed outputBeamformed output, returned as an *M*-by-*L* complex-valued
matrix. The quantity *M* is the number of signal
samples and *L* is the number of desired beamforming
directions specified in the `Ang`

port.

`Signal propagation speed (m/s)`

— Signal propagation speed`physconst('LightSpeed')`

(default) | real-valued positive scalarSignal propagation speed, specified as a real-valued positive
scalar. The default value of the speed of light is the value return
by `physconst('LightSpeed')`

.

`Inherit sample rate`

— Inherit sample rate from upstream blockson (default) | off

Select this parameter to inherit the sample rate from upstream
blocks. Otherwise, specify the sample rate using the **Sample
rate (Hz)** parameter.

**Data Types: **`Boolean`

`Sample rate (Hz)`

— Sampling rate of signal`1e6`

(default) | positive real-valued scalarSpecify the signal sampling rate as a positive scalar. Units are in Hz.

To enable this parameter, clear the **Inherit sample
rate** parameter.

**Data Types: **`double`

`Signal path FIR filter length`

— Length of the FIR filter along the signal path`1`

(default) | positive integerLength of the signal path FIR filter, specified as a positive integer. The FIR filter is a delta function.

`Adaptive filter step size`

— LMS adaptive filter step size factor`0.1`

(default) | positive scalarThe adaptive filter step size factor, specified as a positive scalar. This quantity, when divided by the total power in the sidelobe canceling path, determines the actual adaptive filter step size used by the LMS algorithm.

`Beamforming direction (deg)`

— Beamforming directionsBeamforming directions, specified as a *2*-by-*L* real-valued
matrix, where *L* is the number of beamforming directions.
Each column takes the form `[AzimuthAngle;ElevationAngle]`

.
Angle units are in degrees. The azimuth angle must lie between –180°
and 180°. The elevation angle must lie between –90°
and 90°. Angles are defined with respect to the local coordinate
system of the array.

To enable this parameter, set the **Source of beamforming
direction** parameter to `Property`

.

`Source of beamforming direction`

— Source of beamforming direction`Property`

(default) | `Input port`

Source of beamforming direction, specified as `Property`

or ```
Input
port
```

. When you set **Source of beamforming direction** to `Property`

,
you then set the direction using the **Beamforming direction
(deg)** parameter. When you select `Input port`

,
the direction is determined by the input to the `Ang`

port.

`Simulate using`

— Block simulation method`Interpreted Execution`

(default) | `Code Generation`

Block simulation, specified as `Interpreted Execution`

or ```
Code
Generation
```

. If you want your block to use the MATLAB^{®} interpreter,
choose `Interpreted Execution`

. If you want
your block to run as compiled code, choose `Code Generation`

.
Compiled code requires time to compile but usually runs faster.

Interpreted execution is useful when you are developing and
tuning a model. The block runs the underlying System
object™ in MATLAB.
You can change and execute your model quickly. When you are satisfied
with your results, you can then run the block using ```
Code
Generation
```

. Long simulations run faster than in interpreted
execution. You can run repeated executions without recompiling. However,
if you change any block parameters, then the block automatically recompiles
before execution.

When setting this parameter, you must take into account the
overall model simulation mode. The table shows how the **Simulate
using** parameter interacts with the overall simulation mode.

When the Simulink^{®} model is in `Accelerator`

mode,
the block mode specified using **Simulate using** overrides
the simulation mode.

**Acceleration Modes**

Block Simulation | Simulation Behavior | ||

`Normal` | `Accelerator` | `Rapid Accelerator` | |

`Interpreted Execution` | The block executes using the MATLAB interpreter. | The block executes using the MATLAB interpreter. | Creates a standalone executable from the model. |

`Code Generation` | The block is compiled. | All blocks in the model are compiled. |

**Data Types: **`char`

`Specify sensor array as`

— Method to specify array`Array (no subarrays)`

(default) | `MATLAB expression`

Method to specify array, specified as ```
Array (no
subarrays)
```

or `MATLAB expression`

.

`Array (no subarrays)`

— use the block parameters to specify the array.`MATLAB expression`

— create the array using a MATLAB expression.

`Expression`

— MATLAB expression used to create an arrayPhased Array System Toolbox™ array System object

MATLAB expression used to create an array, specified as a valid Phased Array System Toolbox array System object.

**Example: **`phased.URA('Size',[5,3])`

To enable this parameter, set **Specify sensor array
as** to `MATLAB expression`

.

`Element type`

— Array element types`Isotropic Antenna`

(default) | `Cosine Antenna`

| `Custom Antenna`

| `Omni Microphone`

| `Custom Microphone`

Antenna or microphone type, specified as one of the following:

`Isotropic Antenna`

`Cosine Antenna`

`Custom Antenna`

`Omni Microphone`

`Custom Microphone`

`Operating frequency range (Hz)`

— Operating frequency range of the antenna or microphone element`[0,1.0e20]`

(default) | real-valued 1-by-2 row vectorSpecify the operating frequency range of the antenna or microphone
element as a 1-by-2 row vector in the form `[LowerBound,UpperBound]`

.
The element has no response outside this frequency range. Frequency
units are in Hz.

To enable this parameter, set **Element type** to ```
Isotropic
Antenna
```

, `Cosine Antenna`

, or ```
Omni
Microphone
```

.

`Operating frequency vector (Hz)`

— Operating frequency range of custom antenna or microphone elements`[0,1.0e20]`

(default) | real-valued row vectorSpecify the frequencies at which to set antenna and microphone
frequency responses as a 1-by-*L* row vector of increasing
real values. The antenna or microphone element has no response outside
the frequency range specified by the minimum and maximum elements
of this vector. Frequency units are in Hz.

To enable this parameter, set **Element type** to ```
Custom
Antenna
```

or `Custom Microphone`

. Use **Frequency
responses (dB)** to set the responses at these frequencies.

`Baffle the back of the element`

— Set back response of an `Isotropic Antenna`

element or an `Omni Microphone`

element to zerooff (default) | on

Select this checkbox to baffle the back response of the element. When backbaffled, the responses at all azimuth angles beyond ±90° from broadside are set to zero. The broadside direction is 0° azimuth angle and 0° elevation angle.

To enable this checkbox, set **Element type** to ```
Isotropic
Antenna
```

or `Omni Microphone`

.

`Exponent of cosine pattern`

— Exponents of azimuth and elevation cosine patterns`[1.5 1.5]`

(default) | nonnegative scalar | real-valued 1-by-2 matrix of nonnegative valuesSpecify the exponents of the cosine pattern as a nonnegative
scalar or a real-valued 1-by-2 matrix of nonnegative values. When
you set **Exponent of cosine pattern** to a 1-by-2
vector, the first element is the exponent for the azimuth direction
cosine pattern, and the second element is the exponent for the elevation
direction cosine pattern. When you set this parameter to a scalar,
both the azimuth direction cosine pattern and the elevation direction
cosine pattern are raised to the same power.

To enable this parameter, set **Element type** to ```
Cosine
Antenna
```

.

`Frequency responses (dB)`

— Antenna and microphone frequency response`[0,0]`

(default) | real-valued row vectorFrequency response of a custom antenna or custom microphone
for the frequencies defined by the **Operating frequency vector
(Hz)** parameter. The dimensions of **Frequency responses
(dB)** must match the dimensions of the vector specified
by the **Operating frequency vector (Hz)** parameter.

To enable this parameter , set **Element type** to ```
Custom
Antenna
```

or `Custom Microphone`

.

`Azimuth angles (deg)`

— Azimuth angles of antenna radiation pattern `[-180:180]`

(default) | real-valued row vectorSpecify the azimuth angles at which to calculate the antenna
radiation pattern as a 1-by-*P* row vector. *P* must
be greater than 2. Azimuth angles must lie between –180°
and 180°, inclusive, and be in strictly increasing order.

To enable this parameter, set **Element type** to ```
Custom
Antenna
```

.

`Elevation angles (deg)`

— Elevation angles of antenna radiation pattern`[-90:90]`

(default) | real-valued row vectorSpecify the elevation angles at which to compute the radiation
pattern as a 1-by-*Q* vector. *Q* must
be greater than 2. Angle units are in degrees. Elevation angles must
lie between –90° and 90°, inclusive, and be in strictly
increasing order.

To enable this parameter, set **Element type** to ```
Custom
Antenna
```

.

`Magnitude pattern (dB)`

— Magnitude of combined antenna radiation pattern`zeros(181,361)`

(default) | real-valued Magnitude of the combined antenna radiation pattern, specified
as a *Q*-by-*P* matrix or a *Q*-by-*P*-by-*L* array.
The quantity *Q* equals the length of the vector
specified by **Elevation angles (deg)**. The quantity
*P* equals length of the vector specified by **Azimuth
angles (deg)**. The quantity *L* equal the
length of the **Operating frequency vector (Hz)**.

If this parameter is a

*Q*-by-*P*matrix, the same pattern is applied to*all*frequencies specified in the**Operating frequency vector (Hz)**parameter.If the value is a

*Q*-by-*P*-by-*L*array, each*Q*-by-*P*page of the array specifies a pattern for the*corresponding*frequency specified in the**Operating frequency vector (Hz)**parameter.

To enable this parameter, set **Element type** to ```
Custom
Antenna
```

.

`Phase pattern (deg)`

— Custom antenna radiation phase pattern`zeros(181,361)`

(default) | real-valued Phase of the combined antenna radiation pattern, specified as
a *Q*-by-*P* matrix or a *Q*-by-*P*-by-*L* array.
The quantity *Q* equals the length of the vector
specified by **Elevation angles (deg)**. The quantity
*P* equals length of the vector specified by **Azimuth
angles (deg)**. The quantity *L* equal the
length of the **Operating frequency vector (Hz)**.

If this parameter is a

*Q*-by-*P*matrix, the same pattern is applied to*all*frequencies specified in the**Operating frequency vector (Hz)**parameter.If the value is a

*Q*-by-*P*-by-*L*array, each*Q*-by-*P*page of the array specifies a pattern for the*corresponding*frequency specified in the**Operating frequency vector (Hz)**parameter.

To enable this parameter, set **Element type** to ```
Custom
Antenna
```

.

`Polar pattern frequencies (Hz)`

— Custom microphone response frequencies1e3 (default) | real scalar | real-valued 1-by-

Response frequencies of the custom microphone of the polar pattern,
specified as a real scalar or real-valued 1-by-*L* vector.
The response frequencies lie within the frequency range specified
by the **Operating frequency vector (Hz)** vector.

To enable this parameter, set **Element type** is
set to `Custom Microphone`

.

`Polar pattern angles (deg)`

— Polar pattern response angles`[-180:180]`

(default) | real-valued -by-Specify the polar pattern response angles, as a 1-by-*P* vector.
The angles are measured from the central pickup axis of the microphone
and must be between –180° and 180°, inclusive.

To enable this parameter, set **Element type** to ```
Custom
Microphone
```

.

`Polar pattern (dB)`

— Custom microphone polar response`zeros(1,361)`

(default) | real-valued Specify the magnitude of the custom microphone element polar
patterns as an *L*-by-*P* matrix. *L* is
the number of frequencies specified in **Polar pattern frequencies
(Hz)**. *P* is the number of angles specified
in **Polar pattern angles (deg)**. Each row of the
matrix represents the magnitude of the polar pattern measured at the
corresponding frequency specified in **Polar pattern frequencies
(Hz)** and all angles specified in **Polar pattern
angles (deg)**. Assume that the pattern is measured in the
azimuth plane. In the azimuth plane, the elevation angle is 0°
and the central pickup axis is 0° degrees azimuth and 0°
degrees elevation. Assume also that the polar pattern is symmetric
around the central axis. You can construct the microphone’s
response pattern in 3-D space from the polar pattern.

To enable this parameter, set **Element type** to ```
Custom
Microphone
```

.

`Geometry`

— Array geometry`ULA`

(default) | `URA`

| `UCA`

| `Conformal Array`

Array geometry, specified as one of

`ULA`

— Uniform linear array`URA`

— Uniform rectangular array`UCA`

— Uniform circular array`Conformal Array`

— arbitrary element positions

`Number of elements`

— Number of array elements`2`

for ULA arrays and `5`

for
UCA arrays (default) | integer greater than or equal to 2The number of array elements for ULA or UCA arrays, specified as an integer greater than or equal to 2.

To enable this parameter, set **Geometry** to `ULA`

or `UCA`

.

`Element spacing (m)`

— Spacing between array elements`0.5`

for ULA arrays and `[0.5,0.5]`

for
URA arrays (default) | positive scalar for ULA or URA arrays | 2-element vector of positive values for URA arraysSpacing between adjacent array elements:

ULA — specify the spacing between two adjacent elements in the array as a positive scalar.

URA — specify the spacing as a positive scalar or a 1-by-2 vector of positive values. If

**Element spacing (m)**is a scalar, the row and column spacings are equal. If**Element spacing (m)**is a vector, the vector has the form`[SpacingBetweenArrayRows,SpacingBetweenArrayColumns]`

.

To enable this parameter, set **Geometry** to `ULA`

or `URA`

.

`Array axis`

— Linear axis direction of ULA`y`

(default) | `x`

| `z`

Linear axis direction of ULA, specified as `y`

, `x`

,
or `z`

. All ULA array elements are uniformly
spaced along this axis in the local array coordinate system.

To enable this parameter, set **Geometry** to `ULA`

.
This parameter is also enabled when the block supports only ULA arrays.

`Array size`

— Dimensions of URA array`[2,2]`

(default) | positive integer | 1-by-2 vector of positive integersDimensions of a URA array, specified as a positive integer or 1-by-2 vector of positive integers.

If

**Array size**is a 1-by-2 vector, the vector has the form`[NumberOfArrayRows,NumberOfArrayColumns]`

.If

**Array size**is an integer, the array has the same number of elements in each row and column.

For a URA, array elements are indexed from top to bottom
along a column, and continuing to the next columns from left to right.
In this figure, the **Array size** value of `[3,2]`

creates
an array having three rows and two columns.

To enable this parameter, set **Geometry** to `URA`

.

`Element lattice`

— Lattice of URA element positions`Rectangular`

(default) | `Triangular`

Lattice of URA element positions, specified as `Rectangular`

or `Triangular`

.

`Rectangular`

— Aligns all the elements in row and column directions.`Triangular`

— Shifts the even-row elements of a rectangular lattice toward the positive row-axis direction. The displacement is one-half the element spacing along the row dimension.

To enable this parameter, set **Geometry** to `URA`

.

`Array normal`

— Array normal direction`x`

for URA arrays
or `z`

for UCA arrays (default) | `y`

Array normal direction, specified as `x`

, `y`

,
or `z`

.

Elements of planar arrays lie in a plane orthogonal to the selected array normal direction. Element boresight directions point along the array normal direction.

Array Normal Parameter Value | Element Positions and Boresight Directions |
---|---|

`x` | Array elements lie in the yz-plane. All
element boresight vectors point along the x-axis. |

`y` | Array elements lie in the zx-plane. All
element boresight vectors point along the y-axis. |

`z` | Array elements lie in the xy-plane. All
element boresight vectors point along the z-axis. |

To enable this parameter, set **Geometry**to `URA`

or `UCA`

.

`Radius of UCA (m)`

— UCA array radius0.5 (default) | positive scalar

Radius of UCA array, specified as a positive scalar.

To enable this parameter, set **Geometry** to `UCA`

.

`Element positions (m)`

— Positions of conformal array elements`[0;0;0]`

(default) | 3-by-Positions of the elements in a conformal array, specified as
a 3-by-*N* matrix of real values, where *N* is
the number of elements in the conformal array. Each column of this
matrix represents the position `[x;y;z]`

of an array
element in the array local coordinate system. The origin of the local
coordinate system is *(0,0,0)*. Units are in meters.

To enable this parameter set **Geometry** to ```
Conformal
Array
```

.

**Data Types: **`double`

`Element normals (deg)`

— Direction of conformal array element normal vectors`[0;0]`

| 2-by-1 column vector | 2-by-Direction of element normal vectors in a conformal array, specified
as a 2-by-1 column vector or a 2-by-*N* matrix. *N* indicates
the number of elements in the array. If the parameter value is a matrix,
each column specifies the normal direction of the corresponding element
in the form `[azimuth;elevation]`

with respect to
the local coordinate system. The local coordinate system aligns the
positive *x*-axis with the direction normal to the
conformal array. If the parameter value is a 2-by-1 column vector,
the same pointing direction is used for all array elements.

You can use the **Element positions (m)** and **Element
normals (deg)** parameters to represent any arrangement in
which pairs of elements differ by certain transformations. The transformations
can combine translation, azimuth rotation, and elevation rotation.
However, you cannot use transformations that require rotation about
the normal direction.

To enable this parameter, set **Geometry** to ```
Conformal
Array
```

.

**Data Types: **`double`

`Taper`

— Array element tapers1 (default) | complex scalar | complex-valued row vector

Specify element tapering as a complex-valued scalar or a complex-valued
1-by-*N* row vector. In this vector, *N* represents
the number of elements in the array.

Also known as *element weights*, tapers
multiply the array element responses. Tapers modify both amplitude
and phase of the response to reduce sidelobes or steer the main response
axis.

If **Taper** is a scalar, the same weight is
applied to each element. If **Taper** is a vector,
a weight from the vector is applied to the corresponding sensor element.
The number of weights must match the number of elements of the array.

**Data Types: **`double`

The *generalized sidelobe canceller* (GSC)
is an efficient implementation of a *linear constraint minimum
variance* (LCMV) beamformer. LCMV beamforming minimizes
the output power of an array while preserving the power in one or
more specified directions. This type of beamformer is called a *constrained
beamformer*. You can compute exact weights for the constrained
beamformer but the computation is costly when the number of elements
is large. The computation requires the inversion of a large spatial
covariance matrix. The GSC formulation converts the adaptive constrained
optimization LCMV problem into an adaptive unconstrained problem,
which simplifies the implementation.

In the GSC algorithm, incoming sensor data is split into two signal paths as shown in the block diagram. The upper path is a conventional beamformer. The lower path is an adaptive unconstrained beamformer whose purpose is to minimize the GSC output power. The GSC algorithm consists of these steps:

Presteer the element sensor data by time-shifting the incoming signals. Presteering time-aligns all sensor element signals. The time shifts depend on the arrival angle of the signal.

Pass the presteered signals through the upper path into a conventional beamformer with fixed weights,

**w**._{conv}Also pass the presteered signals through the lower path into the blocking matrix,

**B**. The blocking matrix is orthogonal to the signal and removes the signal from the lower path.Filter the lower path signals through a bank of FIR filters. The

`FilterLength`

property sets the length of the filters. The filter coefficients are the adaptive filter weights,**w**._{ad}Compute the difference between the upper and lower signal paths. This difference is the beamformed GSC output.

Feed the beamformed output back into the filter. Adapt the filter weights using a least mean-square (LMS) algorithm. The adaptive LMS step size is the quantity set by the

`LMSStepSizeFactor`

property, divided by the total signal power.

Was this topic helpful?

You can also select a location from the following list:

- Canada (English)
- United States (English)

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)