# comm.EVM

Measure error vector magnitude (EVM) of received signal

## Description

The `comm.EVM`

System object™ measures the root mean squared (RMS) EVM, maximum EVM, and percentile EVM of a
received signal.

To measure the EVM of a received signal:

Create the

`comm.EVM`

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 an EVM measurement
System object.`evm`

= comm.EVM

sets properties using one or more name-value arguments. For example,
`evm`

= comm.EVM(`Name`

=`Value`

)`ReferenceSignalSource="Estimated from reference constellation"`

configures the object to measure the EVM of a received signal relative to a reference
constellation.

## Properties

## Usage

### Syntax

### Description

measures the percentage RMS EVM of received signal `rmsEVM`

= evm(`refSym`

,`rxSym`

)`rxSym`

relative to
reference signal `refSym`

over the measurement interval specified in
the `MeasurementIntervalSource`

and `MeasurementInterval`

properties.

`[`

also measures the maximum percentage EVM over the configured measurement interval.`rmsEVM`

,`maxEVM`

] = evm(`refSym`

,`rxSym`

)

To use this syntax, set the `MaximumEVMOutputPort`

property to `true`

.

`[___,`

also measures the value below which `xEVM`

] = evm(`refSym`

,`rxSym`

)*X*% of EVM measurements fall using
all input frames since the last reset, regardless of measurement interval configuration.
Set the value of *X* in the `XPercentileValue`

property. For example, if you set the
`XPercentileValue`

to `95`

, then 95% of all EVM
measurements since the last reset fall below the value of `xEVM`

. You
can use this syntax with any previous output argument combination.

To use this syntax, set the `XPercentileEVMOutputPort`

property to `true`

.

`[___,`

also returns the number of symbols used to measure the `numSym`

] = evm(`refSym`

,`rxSym`

)*X*-percentile
EVM. To use this syntax, set the `XPercentileEVMOutputPort`

and `SymbolCountOutputPort`

properties to `true`

.

`[___] = evm(`

measures the
EVM of the received signal relative to the reference signal specified in the `rxSym`

)`ReferenceConstellation`

property. You can use this syntax with any previous
output argument combination.

To use this syntax, set the `ReferenceSignalSource`

property to ```
'Estimated from reference
constellation'
```

and the `ReferenceConstellation`

property to
a vector of length equal to that of the `rxSym`

input.

### Input Arguments

### Output Arguments

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

## Examples

## Algorithms

The implementation supports three normalization methods. You can normalize measurements according to the average power of the reference signal, average constellation power, or peak constellation power. Different industry standards follow one of these normalization methods.

The algorithm calculates the RMS EVM value differently for each normalization method.

EVM Normalization Method | Algorithm |
---|---|

Reference signal |
$$EV{M}_{\text{RMS}}=\sqrt{\frac{\frac{1}{N}{\displaystyle \sum _{k=1}^{N}({e}_{k})}}{\frac{1}{N}{\displaystyle \sum _{k=1}^{N}({I}_{k}^{2}+{Q}_{k}^{2})}}}\times 100$$ |

Average power |
$$EV{M}_{\text{RMS}}(\text{\%})=100\sqrt{\frac{\frac{1}{N}{\displaystyle \sum _{k=1}^{N}({e}_{k})}}{{P}_{\text{avg}}}}$$ |

Peak power |
$$EV{M}_{\text{RMS}}(\text{\%})=100\sqrt{\frac{\frac{1}{N}{\displaystyle \sum _{k=1}^{N}({e}_{k})}}{{P}_{\text{max}}}}$$ |

In these equations:

*e*= $${e}_{k}={({I}_{k}-{\tilde{I}}_{k})}^{2}+{({Q}_{k}-{\tilde{Q}}_{k})}^{2}$$_{k}*I*_{k}is the in-phase measurement of the*k*th symbol in the burst.*Q*_{k}is the quadrature phase measurement of the*k*th symbol in the burst.*N*is the input vector length.*P*_{avg}is the average constellation power.*P*_{max}is the peak constellation power.*I*_{k}and*Q*_{k}represent ideal (reference) values. $${\tilde{I}}_{k}$$ and $${\tilde{Q}}_{k}$$ represent measured (received) symbols.

The maximum EVM is the maximum EVM value in a frame or $$EV{M}_{\text{max}}=\underset{k\in [1,\mathrm{...},N]}{\text{max}}\left\{EV{M}_{k}\right\}\text{\hspace{0.17em}}\text{,}$$ where *k* is the *k*th symbol in a burst
of length *N*.

The definition for *EVM*_{k} depends
on which normalization method you select for computing measurements. The implementation
supports these algorithms.

EVM Normalization Method | Algorithm |
---|---|

Reference signal |
$$EV{M}_{k}=\sqrt{\frac{{e}_{k}}{\frac{1}{N}{\displaystyle \sum _{k=1}^{N}({I}_{k}^{2}+{Q}_{k}^{2})}}}\times 100$$ |

Average power |
$$EV{M}_{k}=100\sqrt{\frac{{e}_{k}}{{P}_{\text{avg}}}}$$ |

Peak power |
$$EV{M}_{k}=100\sqrt{\frac{{e}_{k}}{{P}_{\text{max}}}}$$ |

The implementation computes the *X*-percentile EVM by creating a histogram of
the incoming *EVM*_{k} values. This
output provides the EVM value below which *X*% of the EVM values
fall.

## Extended Capabilities

## Version History

**Introduced in R2012a**