# phased.Receiver

## Description

The `phased.Receiver`

System object™ models a multichannel receiver. The object supports system-level multi-channel
receiver chains that include impairments such as nonlinear gain, system noise, and phase
offsets.

To create a receiver

Create the

`phased.Receiver`

object and set its properties.Call the object with arguments, as if it were a function.

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

## Creation

### Description

creates a receiver
System object, `recvr`

= phased.Receiver`recvr`

.

creates a receiver System object
`recvr`

= phased.Receiver(`Name`

=`Value`

)`recvr`

with each specified property `Name`

set to
the specified `Value`

. You can specify additional name-value pair
arguments in any order as (`Name1`

=`Value1`

, …
,`NameN`

=`ValueN`

).

## Properties

The order that receiver effects are applied to the signal is fixed. The following list describes the order in which effects are applied to the input signal. All properties need not be included but if they are, they will be applied in this order regardless of the order in which their properties are listed::

System noise is added according to the method specified in

`NoiseMethod`

property.The signal gain is applied according to the method specified in

`GainMethod`

property. This gain may be linear or non-linear as a function of input power.A phase offset is added to the signal according to the

`PhaseOffset`

property.

Properties can be applied to *N* channels by specifying properties as an
*N*-element vector. If a property is specified as a scalar, it will be
expanded to match the size of vector properties. Scalars are expanded to
length-*N* vectors containing the scalar value.

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.

`EnableInputPort`

— Enable receiver input port

`false`

(default) | `true`

Set this property to `true`

to allow the receiver to accept input
when the enabling signal, `EN`

, argument is on.

**Example: **`EnableInputPort=true`

**Data Types: **`logical`

`AddInputNoise`

— Add noise to input signal

`false`

(default) | `true`

If set to `true`

, noise is added to the input signal prior to
applying receiver effects. The `InputNoiseTemperature`

property
determines the power of the added noise. The `SampleRate`

property
determines the noise bandwidth.

**Example: **
`true`

**Data Types: **`logical`

`InputNoiseTemperature`

— Input noise temperature

`290`

(default) | positive scalar | length-*N* vector of positive values

Input noise temperature, specified as a positive scalar or
length-*N* vector of positive values where *N* is
the number of receiver channels. If `InputNoiseTemperature`

is a
scalar, the same value is applied to all channels. Units are in Kelvin degrees.

All properties

**Example: **`300`

#### Dependencies

To enable this property, set the `AddInputNoise`

property to
`true`

.

**Data Types: **`single`

| `double`

`NoiseMethod`

— Noise method

`'Noise figure'`

(default) | `'None'`

| `'Noise factor'`

| `'Noise temperature'`

Method for defining the system noise, specified as `'None'`

, `'Noise figure'`

, `'Noise factor'`

or `'Noise temperature'`

.

When set to

`'None'`

, no noise is applied.When set to

`'Noise figure'`

, the`NoiseFigure`

property determines the noise level.When set to

`'Noise temperature'`

, the`NoiseTemperature`

property determines the noise level.When set to

`'Noise factor'`

, the`NoiseFactor`

property determines the noise level.

The noise bandwidth is derived from the input signal sample rate.

**Example: **`'Noise figure'`

**Data Types: **`char`

| `string`

`NoiseFigure`

— Noise figure

`3`

(default) | real scalar | length-*N* vector or real values

Receiver noise figure, specified as a real scalar or length-*N*
vector of real values. *N* is the number of channels. If
`NoiseFigure`

is a scalar, the same value is applied to all
channels. Noise is generated with respect to the temperature defined by the
`ReferenceTemperature`

property.

#### Dependencies

To enable this property, set the `NoiseMethod`

to
`'Noise figure'`

.

**Data Types: **`single`

| `double`

`NoiseFactor`

— Noise factor

`2`

(default) | positive scalar | length-*N* vector of positive values

Receiver noise factor, specified as a positive scalar or length-*N*
vector of positive values. *N* is the number of channels. If
`NoiseFactor`

is a scalar, the same value is applied to all
channels. Noise is generated with respect to the temperature defined by the
`ReferenceTemperature`

property.

#### Dependencies

To enable this property, set the `NoiseMethod`

property to
`'Noise factor'`

.

**Data Types: **`single`

| `double`

`NoiseTemperature`

— Equivalent noise temperature

`290`

(default) | positive scalar | length-*N* vector of positive values

Equivalent noise temperature, specified as a positive scalar or length-*N* vector of positive values. *N* is the number of channels. If `NoiseTemperature`

is a scalar, the same value is applied to all channels. Units are in K.

#### Dependencies

To enable this property, set the `NoiseMethod`

to `'Noise temperature'`

.

**Data Types: **`single`

| `double`

`ReferenceTemperature`

— Reference temperature

`290`

(default) | positive scalar | length-*N* vector of positive values

Reference temperature, specified as a positive scalar or a length-*N* vector of positive values. *N* is the number of channels. If `ReferenceTemperature`

is a scalar, the same value is applied to all channels.

#### Dependencies

To enable this property, set the `NoiseMethod`

property to `'Noise figure'`

or `'Noise factor'`

.

**Data Types: **`single`

| `double`

`SampleRate`

— Sample rate

`1e6`

(default) | positive scalar

Sample rate of the input signal, specified as a positive scalar. Use this property to add noise to the signal. The `SampleRate`

is only used to derive the noise bandwidth of the signal.

#### Dependencies

To enable this property, set the `AddInputNoise`

property to `true`

or set the `NoiseMethod`

property to `'Noise figure'`

, `'Noise factor'`

, or `'Noise temperature'`

.

**Data Types: **`single`

| `double`

`GainMethod`

— Gain method

`'Linear'`

(default) | `'Cubic polynomial'`

| `'Lookup table'`

Method for applying gain to the received signal, specified as
`'Linear'`

, `'Cubic polynomial'`

or ```
'Lookup
table'
```

.

When set to

`'Linear'`

, linear gain is applied.When set to

`'Cubic polynomial'`

, a cubic polynomial model is used to apply non-linear gain.When set to

`'Lookup Table'`

, a lookup table is defined to directly specify output power and phase shift as a function of input power.

**Data Types: **`char`

| `string`

`Gain`

— Receiver gain

`20`

(default) | real scalar | length-*N* vector of real values

Linear receiver gain, specified as a real scalar or length-*N*
vector of real values. *N* is the number of channels. If
`Gain`

is a scalar, the same value is applied to all channels.
Units are in dB.

#### Dependencies

To enable this property, set the `GainMethod`

property to
`'Linear'`

or `'Cubic polynomial'`

.

**Data Types: **`single`

| `double`

`OIP3`

— Output IP3

`Inf`

(default) | scalar | length-*N* vector of real values

Output third-order intercept point (OIP3). specified as a scalar or
length-*N* vector of real values. *N* is the
number of channels. OIP3 expresses the non-linearity of the transmitter or receiver. If
OIP3 is a scalar, the same value is applied to all channels. See Nonlinearities and Noise in Idealized Baseband Amplifier Block (RF Blockset) for a detailed
discussion of OIP3. Units are in dBm.

#### Dependencies

To enable this property, set the `GainMethod`

property to `'Cubic polynomial'`

.

**Data Types: **`single`

| `double`

`Table`

— AM/AM-AM/PM lookup table

```
[-25, 5, -1; -10, 20, -2; 0, 27, 5; 5, 28,
12]
```

(default) | *M*-by-*N* real-valued matrix | *M*-by-*N* real-valued matrix

AM/AM-AM/PM lookup table, specified as a
3-by-*M*-by-*N* real-valued array. The lookup
table specifies amplifier power characteristics. *M* is the number of
table entries and *N* is the number of channels. Each row in the table
expresses the relationship between output power or phase change as a function of input
power. Specify AM/AM (in dB/dB) and AM/PM (in deg/dB) characteristics in a
*[Pin(dBm),Pout(dBm),Phase shift(degrees)]*-by-*M*
matrix or *[Pin(dBm),Pout(dBm),Phase
shift(degrees)]*-by-*M*-by-*N* array. Use
the table to linear interpolate or extrapolate power values. The column 1 input power
must increase monotonically. There must be at least 3 rows in the table. The power
output can be written as:

$${u}_{out}={T}_{AM-AM}(\left|u\right|){e}^{{T}_{AM-PM}(\left|u\right|+\angle u)}$$

#### Dependencies

To enable this property, set the `GainMethod`

property to
`'Lookup table'`

.

**Data Types: **`single`

| `double`

`PhaseOffset`

— Phase offset

`0`

(default) | scalar | length-*N* vector of real values

Phase offset, specified as a real scalar or length-*N* vector of real values. *N* is the number of channels. If `PhaseOffset`

is a scalar, the same value is applied to all channels. Units are in degrees.

**Data Types: **`single`

| `double`

`SeedSource`

— Source of seed for random number generator

`'Auto'`

(default) | `'Property'`

Source of random generator seed, specified as `'Auto'`

or
`'Property'`

. When you set this property to
`'Auto'`

, random numbers are generated using the default MATLAB random
number generator. When you set this property to `'Property'`

, a private
random number generator is used with a seed specified by the value of the
`Seed`

property. To use this object with Parallel Computing Toolbox™, set this property to `'Auto'`

.

**Data Types: **`single`

| `double`

`Seed`

— Seed for random number generator

`0`

(default) | nonnegative integer

Seed for the random number generator, specified as a nonnegative integer less than 2^32.

#### Dependencies

To enable this property, set the `SeedSource`

property to
`'Property'`

.

**Data Types: **`single`

| `double`

## Usage

### Description

### Input Arguments

`X`

— Receiver Input signal voltage

complex-valued vector | complex-valued matrix

Receiver Input signal voltage, specified as a complex-valued vector or complex-valued matrix. The number of rows is equal to the number of samples.

If `X`

is a vector, the number of rows in
`Y`

equals the number of rows in `X`

.The
number of columns in `Y`

equals the number of channels in the
receiver.

In the case where `X`

is a vector, the number of channels is
determined by the active properties that indicate a number of channels, such as
`NoiseFigure`

, `ReferenceTemperature`

,
`Gain`

, or `PhaseOffset`

.

Receiver effects are applied to the signal in a fixed order although some effects can be omitted. The order in which effects are applied to the input signal:

Set input signal to

`false`

for any disabled points if the`EnableInputPort`

property is`true`

.Input noise is added according to the

`AddInputNoise`

property.System noise is added according to the method specified in

`NoiseMethod`

property.Signal gain is applied according to the method specified in the

`GainMethod`

property.Phase offset is added to the signal according to

`PhaseOffset`

property.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

`EN`

— Enabling signal

real-valued vector (default) | real-valued matrix | logical-valued vector | logical-valued matrix

Enabling signal, specified as a real-valued vector or matrix or logical-valued vector or matrix.

If

`EN`

is a vector, it must have the same number of rows as the input signal matrix`X`

. Then, the value in each row of`EN`

is applied to all the columns of`X`

.If

`EN`

is a matrix,`EN`

must be the same size as`X`

, and each element in`EN`

is applied to the corresponding element in`X`

.

If `EN`

is of type single or double, when an element of
`EN`

is zero,the receiver is turned off, and the input signal is
set to zero. When element of `EN`

is nonzero, the receiver is
turned on, and the input passes through the receiver.

If `EN`

is logical, the receiver is enabled whenever an element
of `EN`

is `true`

and disabled whenever an element
of `EN`

is `false`

.

#### Dependencies

To enable this argument, set the `EnableInputPort`

property
to `true`

.

**Data Types: **`double`

| `single`

| `logical`

### Output Arguments

`Y`

— Receiver output signal voltage

complex-valued vector | complex-valued matrix

Receiver output signal voltage, returned as a complex-valued vector or
complex-valued matrix. If `X`

is a matrix, the size of
`Y`

is equal to the size of `X`

. The
transformation is based on transmitter characteristics, such as the gain,
nonlinearity, and noise. Power is calculated from signal voltage assuming a reference
impedance of 1 Ohm.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

## 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)

### Specific to `phased.Receiver`

`viewGain` | Plot output receiver power or output phase shift as a function of input receiver power |

## Examples

### Display Waveform with Single Channel Receiver

Display a waveform that is output from a single-channel receiver having linear gain. Specify noise setting the **NoiseMethod** property to `'Noise figure'`

.

```
fs = 1e7;
waveform = phased.LinearFMWaveform(SampleRate=fs, ...
PulseWidth=1e-5,SweepBandwidth=5e6);
sig = waveform();
```

Create a receiver object. Apply a 20 dB gain and then add noise to the waveform.

recvr = phased.Receiver(AddInputNoise=true,InputNoiseTemperature=200, ... GainMethod="Linear",Gain=20,NoiseMethod="Noise figure", ... NoiseFigure=5,SampleRate=1e6,PhaseOffset=0);

Pass the waveform through the receiver to create the processed waveform.

y = recvr(sig);

Plot the absolute value of the original waveform and the amplified waveform as a function of time.

dt = 1/fs; n = length(sig); t = (0:(n-1))*dt*1e6; plot(t,abs(sig)) hold on plot(t,abs(y)) hold off legend('Original waveform','Amplified waveform') xlabel('Time (microsec)') ylabel('Signal')

### Model Two-Channel Receiver

Receive a linear FM waveform with a two-channel receiver where the behavior varies between each channel. Use a cubic polynomial gain model to simulate non-linear gain behavior and specify noise using noise temperature. The receiver sample rate is 10 Mhz.

```
fs = 10e6;
waveform = phased.LinearFMWaveform(SampleRate=fs, ...
PulseWidth=1e-5,SweepBandwidth=5e6);
x = waveform();
```

Create the two channel receiver.

recvr = phased.Receiver(GainMethod="Cubic polynomial",Gain=[19,21], ... OIP3=[30,32],NoiseMethod="Noise temperature", ... NoiseTemperature=[290,350],SampleRate=fs,PhaseOffset=[0,15]);

Pass the waveform through the receiver.

y = recvr(x); viewGain(recvr,ChannelIndex=1,Parent=gca); hold on viewGain(recvr,ChannelIndex=2,Parent=gca); legend('Channel 1, Gain = 19','Channel 2, Gain = 21', ... 'Location','SouthEast') hold off

## More About

### Comparison between phased.Receiver and phased.ReceiverPreamp

You can use the `phased.Receiver`

System object in place of the `phased.ReceiverPreamp`

in many case. Here
are some guidelines for replacing `phased.ReceiverPreamp`

properties by equivalent `phased.Receiver`

properties.

You can replace the

`Gain`

property of the`phased.ReceiverPreamp`

System object with the`Gain`

property of the`phased.Receiver`

but first you must specify that the gain is linear. To do this, set the`GainMethod`

property of the`phased.Receiver`

to`"Linear"`

.There is no property in

`phased.Receiver`

equivalent to the`Loss`

property of the`phased.ReceiverPreamp`

. Loss can be obtained by offsetting the`Gain`

.Both the

`phased.ReceiverPreamp`

and the`phased.Receiver`

System objects lets you add noise to the receiver output. You can obtain equal noise powers by proper choice of the properties of each objectFor the

`phased.ReceiverPreamp`

, you can specify the noise using the`NoiseMethod`

property set to either`"Noise power"`

or`"Noise temperature"`

.Setting the

`NoiseMethod`

property to`"Noise temperature"`

adds complex baseband noise to the input signal. The quantity$$NP=k(F-1){T}_{\text{Ref}}BW$$

represents the noise power computed from the (

*T*_{Ref}), the`NoiseFactor`

(*F*), and the`SampleRate`

(*f*_{s}) properties. The noise bandwidth (*BW*) is one-half the sample rate.Setting the

`NoiseMethod`

property to`"Noise power"`

lets you specify the noise power (*NP*) directly using the`NoisePower`

property.

The

`phased.Receiver`

System object does not have a`"Noise power"`

option available in its`NoiseMethod`

property. The only options are`"Noise figure"`

,`"Noise factor"`

,`"None"`

, and`"Noise temperature"`

.When the

`NoiseMethod`

property is set to`"Noise temperature"`

, use the`NoiseTemperature`

property to derive the noise power. The noise power (NP) is$$NP=k{T}_{\text{N}}BW$$

where

*k*is Boltzmann's constant,*T*_{N}is the noise temperature given by the`NoiseTemperature`

property, and the bandwidth (*BW*) is one-half the sample rate.When the

`NoiseMethod`

property is set to`"Noise figure"`

or`"Noise factor"`

, the noise power can be derived using either quantity. First compute the noise factor$$F=1+\frac{{T}_{N}}{{T}_{\text{Ref}}}$$

where

*T*_{N}is the noise temperature set by the`NoiseTemperature`

property and*T*_{Ref}is the reference temperature set by the`ReferenceTemperature`

property. Compute the noise temperature$${T}_{\text{N}}=(F-1){T}_{\text{Ret}}$$

from the noise factor (

*F*). Using this expression for the noise temperature, obtain the noise power$$NP=k(F-1){T}_{\text{Ref}}BW$$

completely in terms of the noise factor.

Instead of the noise factor you can use the noise figure (in dB)

*F*_{dB}. The noise figure is related to the noise factor (*F*) by$${F}_{\text{dB}}=10{\mathrm{log}}_{10}F$$

and can be used when the

`NoiseMethod`

property is set to`"Noise figure"`

.

Because of how the

`phased.ReceiverPreamp`

adds noise to the signal, the System object does not apply noise correctly. The`phased.ReceiverPreamp`

System object adds noise to the signal after applying the gain. In contrast, the`phased.Receiver`

System object adds noise to the signal before applying the gain.Referring back to the general form of the noise factor,

$$NP=k(F-1){T}_{\text{Ref}}BW$$

set the noise factor of the

`phased.Receiver`

so that its output noise power equals the output noise factor of the`phased.ReceiverPreamp`

.$$\begin{array}{l}k({F}_{preamp}-1){T}_{\text{Ref}}BW=k({F}_{recvr}-1){T}_{\text{Ref}}BW\cdot G\\ {F}_{preamp}-1=({F}_{recvr}-1)\cdot G\\ {F}_{preamp}=({F}_{recvr}-1)\cdot G+1\\ {F}_{recvr}=({F}_{preamp}-1+G)/G\end{array}$$

To obtain the same output noise power, you must adjust the noise factor

*F*(or equivalently the noise figure).

## Algorithms

### Output third-order intercept point (OIP3)

Cubic polynomials can be used to model nonlinear amplifier power gain. The general form of the cubic nonlinear AM-AM amplifier is characterized by

$${F}_{AM-AM}(u)={c}_{1}u+\frac{3}{4}{c}_{3}u$$

where *u* is the input power and
*F*_{AM-AM}(*u*) is the output
power. *c*_{1} represents the linear gain in the
`Gain`

property.

$${c}_{3}=\frac{4{c}_{1}^{3}}{3\times {10}^{\frac{OIP3-30}{10}}}$$

and OIP3 is the third-order intercept point specified by the
`OIP3`

property.

### Lookup Table

A lookup table expresses the relationship between output power or phase change as a
function of input power at discrete points. The table contains values for
*T*_{AM-AM} and
*T*_{AM-PM}. The output power is derived by linear
interpolation or extrapolation of

$${u}_{out}={T}_{AM-AM}(\left|u\right|){e}^{{T}_{AM-PM}(\left|u\right|+\angle u)}$$

between these values.

## References

[1] Mark Richards,
*Fundamentals of Radar Signal Processing*, McGraw-Hill,
2005.

[2] Merrill Skolnik,
*Introduction to Radar Systems*, 3rd Ed., McGraw-Hill,
2001.

[3] Byron Edde, *Radar:
Principles, Technology, Applications*, Prentice Hall, 1993.

[4] Behzad Razavi, *RF
Microelectronics*, Second Edition, Wiley, 2012.

## Extended Capabilities

### C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

Usage notes and limitations:

See System Objects in MATLAB Code Generation (MATLAB Coder).

## Version History

**Introduced in R2024a**

## MATLAB 명령

다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.

명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

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