# phased.Transmitter

Transmitter

## Description

The `phased.Transmitter`

System object™ models a waveform transmitter. The object supports system-level multi-channel
transmitter chain modelling including impairments such as non-linear gain, system noise, and
phase offsets.

To create a transmitter:

Create the

`phased.Transmitter`

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
transmitter System object, `transm`

= phased.Transmitter`transm`

.

creates a transmitter object, `transm`

= phased.Transmitter(`Name`

=`Value`

)`transm`

, with each specified property
`Name`

set to the specified `Value`

.

Specify optional pairs of arguments as
`Name1=Value1,...,NameN=ValueN`

, where `Name`

is
the argument name and `Value`

is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.

## Properties

The order that transmitter 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:

The input signal is scaled according to

`PeakPower`

property.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.A random phase shift is applied based on the

`CoherentOnTransmit`

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.

`PeakPower`

— Transmit peak power

`5000`

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

Transmit peak power, specified as a positive scalar or length-*N*
vector of positive values where *N* is the number of channels. The
transmitted signal has a maximum input power of 1 Watt. If
`PeakPower`

is a scalar, the same value will be applied to all
channels. Units are in Watts.

**Data Types: **`double`

`GainMethod`

— Gain method

`'Linear'`

(default) | `'Cubic polynomial'`

| `'Lookup table'`

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

, `'Cubic polynomial'`

or ```
'Lookup
table'
```

.

When set to

`'Linear'`

, a 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`

— Gain

`20`

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

Linear transmitter gain, specified as a 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`

`LossFactor`

— Transmit loss factor

`0`

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

Transmit loss factor, specified as a nonnegative scalar or
length-*N* vector of nonnegative values. *N* is the
number of channels. If `LossFactor`

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

#### Dependencies

To enable this property, set the `GainMethod`

property to
`'Linear'`

.

**Data Types: **`double`

| `single`

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

`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

Transmitter 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
`'NoiseFigure'`

.

**Data Types: **`single`

| `double`

`NoiseFactor`

— Noise factor

`2`

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

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

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

`InUseOutputPort`

— Enable transmitter status output

`false`

(default) | `true`

To obtain the transmitter in-use status for each output sample, set this property to
`true`

and use the corresponding output argument of the object
function. In this case, 1's indicate the transmitter is on and 0's indicate the
transmitter is off. If you do not want to obtain the transmitter in-use status, set this
property to `false`

.

**Data Types: **`logical`

`CoherentOnTransmit`

— Preserve coherence among pulses

`true`

(default) | `false`

Specify whether to preserve coherence among transmitted pulses. When you set this
property to `true`

, the transmitter does not introduce any random phase
to the output pulses. When you set this property to `false`

, the
transmitter adds a random phase noise to each transmitted pulse. The random phase noise
is introduced by multiplication of the pulse by
*e ^{jϕ}*where ϕ is a uniform random variable
on the interval [0,2π].

**Data Types: **`logical`

`PhaseNoiseOutputPort`

— Enable pulse phase noise output

`false`

(default) | `true`

To obtain the introduced transmitter random phase noise for each output sample, set
this property to `true`

and use the corresponding output argument of
the object function. You can use in the receiver to simulate-coherent-on receive
systems. If you do not want to obtain the random phase noise, set this property to
`false`

.

#### Dependencies

To enable this property, set the `CoherentOnTransmit`

property
to `false`

.

**Data Types: **`logical`

`SeedSource`

— Source of seed for random number generator

`'Auto'`

(default) | `'Property'`

`'Auto'` | The default MATLAB^{®} random number generator produces the
random numbers. Use `'Auto'` if you are using this
object with Parallel Computing Toolbox™ software. |

`'Property'` | The object uses its own private random number generator to
produce random numbers. The `Seed` property of
this object specifies the seed of the random number generator. Use `'Property'` if
you want repeatable results and are not using this object with Parallel Computing Toolbox software. |

#### Dependencies

To enable this property, set the `CoherentOnTransmit`

property
to `false`

or specify that the `NoiseMethod`

is
not set to a value other than `'None'`

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

.

**Data Types: **`char`

| `string`

`Seed`

— Random number generator seed

`0`

(default) | nonnegative integer between `0`

and
`2`^{32}–1

^{32}–1

Random number generator seed, specified as a nonnegative integer between 0 and
2^{32}–1.

#### Dependencies

To enable this property, set the `CoherentOnTransmit`

property
to `false`

, set the `SeedSource`

property to
`'Property'`

, and set the `NoiseMethod`

property to `'None'`

.

**Data Types: **`double`

| `single`

## Usage

### Description

### Input Arguments

`X`

— Transmitter Input signal voltage

complex-valued vector | complex-valued matrix

Transmitter 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 channel number, such as
`NoiseFigure`

, `ReferenceTemperature`

,
`Gain`

, `PhaseOffset`

, etc.

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:

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`

.

**Data Types: **`single`

| `double`

**Complex Number Support: **Yes

### Output Arguments

`Y`

— Transmitter output signal voltage

same dimension as `X`

Transmitter 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

`TR`

— on/off status

logical vector

On/off status of the transmitter, returned as `false`

or
`true`

.`TR`

is a logical vector where
`true`

indicates the transmitter is on for the corresponding sample
time, and `false`

indicates the transmitter is off. TR is a logical
matrix with the same size as the input `X`

argument.

#### Dependencies

To enable this argument, set the `InUseOutputPort`

property
is `true`

.

`PHNOISE`

— Random phase noise

complex-valued vector | complex-valued matrix

Random phased noise, returned as complex-valued vector or complex-valued matrix.
`PHNOISE`

is the random phase noise added to each transmitted
sample when the `CoherentOnTransmit`

property is
`false`

and the `PhaseNoiseOutputPort`

property
is `true`

. `PHNOISE`

is a vector having the same
size as `Y`

. Each element in `PHNOISE`

contains
the random phase between 0 and 2*pi, added to the corresponding sample in
`Y`

by the transmitter.

## 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.Transmitter`

`viewGain` | Plot transmitter output power as function of transmitter input power |

## Examples

### Transmit LFM Pulse

Transmit a pulse containing a linear FM waveform with a bandwidth of 5 MHz. The sample rate is 10 MHz and the pulse repetition frequency is 10 kHz.

fs = 1e7; waveform = phased.LinearFMWaveform('SampleRate',fs, ... 'PulseWidth',1e-5,'SweepBandwidth',5e6); x = waveform(); transmitter = phased.Transmitter('PeakPower',5e3); y = transmitter(x);

### Three-Channel Transmitter for LFM Pulse

Transmit a pulse containing a linear FM waveform. The transmitter has three channels with different gains, OIP3 values, and phase offsets.

First, create an LFM waveform. The sample rate is 10 MHz, the pulse width is 10 microseconds, and the sweep bandwidth is 5 MHz.

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

Transmit the waveform over three channels..

tx = phased.Transmitter(GainMethod="Cubic polynomial", ... Gain=[19,21,25],OIP3=[11,32,29],PhaseOffset=[0,30,45]); y = tx(x);

Display gains for each channel.

viewGain(tx,'ChannelIndex',1,'Parent',gca); hold on viewGain(tx,'ChannelIndex',2,'Parent',gca); viewGain(tx,'ChannelIndex',3,'Parent',gca); legend('Channel 1, Gain = 11','Channel 2, Gain = 21','Channel 3, Gain = 25', ... 'Location','SouthEast') hold off

## Algorithms

### 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] Edde, B. *Radar:
Principles, Technology, Applications*. Englewood Cliffs, NJ: Prentice Hall,
1993.

[2] Richards, M. A.
*Fundamentals of Radar Signal Processing*. New York: McGraw-Hill,
2005.

[3] Skolnik, M.
*Introduction to Radar Systems*, 3rd Ed. New York: McGraw-Hill,
2001.

## 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 R2011a**

### R2022a: Transmitter Impairments

The System object lets you create multichannel data that incorporates impairments such as gain nonlinearities, signal noise, phase offsets, and random phase shifts.

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

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)