Measure error vector magnitude
The comm.EVM
(error vector magnitude) System object™ measures
the modulator or demodulator performance of an impaired signal.
To measure error vector magnitude:
Define and set up your EVM object. See Construction.
Call step
to measure the modulator or demodulator
performance according to the properties of comm.EVM
.
The behavior of step
is specific to each object in
the toolbox.
Note
Starting in R2016b, instead of using the step
method
to perform the operation defined by the System object, you can
call the object with arguments, as if it were a function. For example, y
= step(obj,x)
and y = obj(x)
perform
equivalent operations.
EVM = comm.EVM
creates an error vector
magnitude object, EVM
. This object measures the
amount of impairment in a modulated signal.
EVM = comm.EVM(
creates
an Name
,Value
)EVM
object with each specified property set
to the specified value. You can specify additional namevalue pair
arguments in any order as (Name1
,Value1
,...,NameN
,ValueN
).
Example: EVM = comm.EVM('ReferenceSignalSource','Estimated
from reference constellation')
creates an object, EVM
,
that measures the RMS EVM of a received signal by using a reference
constellation.

Normalization method Normalization method used in EVM calculation, specified as one
of the following: 

Average constellation power Average constellation power, specified in watts as a positive
real scalar. This property is available when 

Peak constellation power Peak constellation power, specified in watts as a positive real
scalar. This property is available when 

Reference signal source Reference signal source, specified as either 

Reference constellation Reference constellation, specified as a vector. This property
is available when the The default is 

Measurement interval source Measurement interval source, specified as one of the following:


Measurement interval Measurement interval over which the EVM is calculated, specified
in samples as a real positive integer. This property is available
when 

Averaging dimensions Averaging dimensions over which to average the EVM measurements, specified as an integer or
row vector of integers with element values in the range [1, 3]. For example,
to average across the rows, set this property to The object supports variablesize inputs over the dimensions in which the averaging takes
place. However, the input size for the nonaveraged dimensions must remain
constant between calls of the object. For example, if the input has size


Maximum EVM measurement output port Maximum EVM measurement output port, specified as a logical
scalar. To create an output port for maximum EVM measurements, set
this property to 

Xpercentile EVM measurement output port Xpercentile EVM measurement output port,
specified as a logical scalar. To create an output port for Xpercentile
EVM measurements, set this property to 

Xpercentile value Xpercentile value below which X%
of the EVM measurements fall, specified as a real scalar from 

Symbol count output port Symbol count output port, specified as a logical scalar. To
output the number of accumulated symbols used to calculate the Xpercentile
EVM measurements, set this property to 
step  Measure error vector magnitude 
Both the EVM block and the EVM object provide 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 block or object calculates the RMS EVM value differently for each normalization method.
EVM Normalization Method  Algorithm 

Reference signal 
$$EV{M}_{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})}}}*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}}}}$$ 
Where:
e_{k} = $${e}_{k}={({I}_{k}{\tilde{I}}_{k})}^{2}+{({Q}_{k}{\tilde{Q}}_{k})}^{2}$$
I_{k} is the inphase measurement of the kth symbol in the burst
Q_{k} is the quadrature phase measurement of the kth 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 max EVM is the maximum EVM value in a frame or $${\text{EVM}}_{\text{max}}=\underset{k\in [1,\mathrm{...},N]}{\text{max}}\left\{{\text{EVM}}_{k}\right\}\text{\hspace{0.17em}}\text{,}$$ where k is the kth symbol in a burst of length N.
The definition for EVM_{k} varies depending upon which normalization method you select for computing measurements. The block or object supports these algorithms.
EVM Normalization  Algorithm 

Reference signal 
$$EV{M}_{k}=\sqrt{\frac{{e}_{k}}{\frac{1}{N}{\displaystyle \sum _{k=1}^{N}({I}_{k}^{2}+{Q}_{k}^{2})}}}*\text{}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 block or object computes the Xpercentile EVM by creating a histogram of all the incoming EVM_{k} values. The output provides the EVM value below which X% of the EVM values fall.