comm.EVM System object

Package: comm

Measure error vector magnitude

Description

The Error Vector Magnitude EVM object is a measurement of modulator or demodulator performance in an impaired signal.

To measure error vector magnitude:

  1. Define and set up your EVM object. See Construction.

  2. Call step to measure modulator or demodulator performance according to the properties of comm.EVM. The behavior of step is specific to each object in the toolbox.

Construction

H = comm.EVM creates an error vector magnitude (EVM) System object™, H. This object measures the amount of impairment in a modulated signal.

H = comm.EVM(Name,Value) creates an EVM object, H, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

Properties

Normalization

EVM normalization method

Specify the normalization method that the object uses in the EVM calculation. Choose from Average reference signal power | Average constellation power | Peak constellation power. The default is Average reference signal power.

AverageConstellationPower

Average constellation power

Specify the average constellation power (in watts) that the object uses to normalize the EVM measurements. Set this property to a positive, real scalar value with a data type of double, single, or integer. This property applies when you set the Normalization property to Average constellation power. The default is 1.

PeakConstellationPower

Peak constellation power

Specify the peak constellation power (in watts) that the object uses to normalize the EVM measurements. Set this property to a positive, real scalar value with a data type of double, single, or integer. This property applies when you set the Normalization property to Peak constellation power. The default is 1.

MaximumEVMOutputPort

Enable maximum EVM measurement output

When you set this property to true, the step method outputs maximum EVM measurements. The default is false. The maximum EVM output is the maximum EVM value measured in the current input frame.

XPercentileEVMOutputPort

Enable X-percentile EVM measurement output

When you set this property to true, the step method outputs X-percentile EVM measurements. The default is false. After you set this property the X-percentile EVM measurements persist. These measurements are obtained based on all the input frames since the last reset.

XPercentileValue

X-percentile value

Specify the X-percentile value (in percent) that the object uses to calculate the X-th percentile of the EVM measurements. The default is 95. The X-th percentile is the EVM value below which X% of all the computed EVM values lie. Set this property to a real scalar between 0 and 100, inclusive. This property can have a data type of double, single, or integer, and applies when you set the XPercentileEVMOutputPort property to true.

SymbolCountOutputPort

Enable symbol count output

When you set this property to true, the step method outputs the number of accumulated symbols that the object uses to calculate the X-Percentile EVM measurements since the last reset. The default setting for this property is false. This property applies when you set the XPercentileEVMOutputPort property to true.

Methods

cloneCreate EVM measurement object with same property values
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs from step method
isLockedLocked status for input attributes and nontunable properties
releaseAllow property value and input characteristics changes
resetReset states of EVM measurement object
stepMeasure error vector magnitude

Examples

Measure the EVM of a noisy 16-QAM modulated signal

hMod = comm.RectangularQAMModulator(16);
hAWGN = comm.AWGNChannel('NoiseMethod',...
        'Signal to noise ratio (SNR)',...
        'SNR', 20, 'SignalPower', 10);

% Create an EVM object, output maximum and 90-percentile EVM
% measurements, and symbol count
    hEVM = comm.EVM('MaximumEVMOutputPort',true,...
            'XPercentileEVMOutputPort', true, 'XPercentileValue', 90,...
            'SymbolCountOutputPort', true);
 % Generate modulated symbols and add noise
    refsym = step(hMod, randi([0 15], 1000, 1));
    rxsym = step(hAWGN, refsym);
 % Calculate measurements
    [RMSEVM,MaxEVM,PercentileEVM,NumSym] = step(hEVM,refsym,rxsym)
RMSEVM =

    9.8775


MaxEVM =

   26.8385


PercentileEVM =

   14.9750


NumSym =

        1000

Algorithms

This object implements the algorithm, inputs, and outputs described on the EVM Measurement block reference page. The object properties correspond to the block parameters.

Was this topic helpful?