Measure error vector magnitude
The Error Vector Magnitude EVM object is a measurement of modulator or demodulator performance in an impaired signal.
To measure error vector magnitude:
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).
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.
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.
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.
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.
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.
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.
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.
|clone||Create EVM measurement object with same property values|
|getNumInputs||Number of expected inputs to step method|
|getNumOutputs||Number of outputs from step method|
|isLocked||Locked status for input attributes and nontunable properties|
|release||Allow property value and input characteristics changes|
|reset||Reset states of EVM measurement object|
|step||Measure error vector magnitude|
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
This object implements the algorithm, inputs, and outputs described on the EVM Measurement block reference page. The object properties correspond to the block parameters.