Main Content

phased.Receiver

Receiver

Since R2024a

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

  1. Create the phased.Receiver 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?

Creation

Description

recvr = phased.Receiver creates a receiver System object, recvr.

example

recvr = phased.Receiver(Name=Value) creates a receiver System object 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

expand all

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

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

  2. 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.

  3. 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.

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

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

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

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

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

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

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

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

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

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

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

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

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:

uout=TAMAM(|u|)eTAMPM(|u|+u)

Dependencies

To enable this property, set the GainMethod property to 'Lookup table'.

Data Types: single | double

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

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

Y = recvr(X) returns the transformed received signal voltage Y from the input waveform voltage X. The transformation is based on the characteristics of the receiver, such as the gain, nonlinearity, and noise. Power is calculated from the signal voltage assuming a reference impedance of 1 Ohm.

example

Y = recvr(X,EN) uses the input argument EN as an enabling signal. To use this syntax, set the EnableInputPort property to true.

Input Arguments

expand all

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

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

expand all

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)

expand all

viewGainPlot output receiver power or output phase shift as a function of input receiver power
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

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

Figure contains an axes object. The axes object with xlabel Time (microsec), ylabel Signal contains 2 objects of type line. These objects represent Original waveform, Amplified waveform.

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

Figure contains an axes object. The axes object with title Receiver Gain Method Plot, xlabel Input Power (dBm), ylabel Output Power (dBm) contains 2 objects of type line. These objects represent Channel 1, Gain = 19, Channel 2, Gain = 21.

More About

expand all

Algorithms

expand all

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

Version History

Introduced in R2024a