# EVM calculation in communication toolbox

조회 수: 14 (최근 30일)
Anu 2024년 3월 26일
댓글: Anu 2024년 4월 2일
Hi,
I need a clarification in EVM calculation using comm.EVM system object.
% Define reference (ideal) signal vector
r = [0.707+0.707i, -0.707+0.707i, -0.707-0.707i, 0.707-0.707i];
s = [1+2i, -2+3i, -3-4i, 5-6i];
% Calculate EVM using comm.EVM
evm_metric = comm.EVM;
evm_result = evm_metric(r', s');
evm_result_1 = evm_metric(s', r');
obtained result:
output of evm_result = 422.0673 %
output of evm_result_1 = 82.7617%
my doubts are:
1. What is the % range of the EVM value?

댓글을 달려면 로그인하십시오.

### 채택된 답변

Sudarsanan A K 2024년 3월 26일
Hello Anu,
The "comm.EVM" system object is used to calculate the EVM (Error Vector Magnitude) between the reference signal and the received signal.
1. The minimum EVM value is , representing an ideal match between transmitted and received signals, with no errors. There's no fixed maximum limit for EVM; values can exceed if the magnitude of the error vector is much greater than the magnitude of the reference signal. This indicates poor signal quality or significant distortion in the received signal.
2. The correct argument order for the "comm.EVM" object is (reference signal, received signal), as evident from the documentation:
I hope this helps!
##### 댓글 수: 5이전 댓글 3개 표시이전 댓글 3개 숨기기
Sudarsanan A K 2024년 3월 27일
편집: Sudarsanan A K 2024년 3월 27일
Hello,
The results from both the comm.EVM system object and the "lteEVM" function are actually consistent. It's crucial to recognize that these functions require the input arguments in different orders. Unlike the "comm.EVM" system object, the "lteEVM" function expects the input array first, followed by the reference signal vector. (https://www.mathworks.com/help/lte/ref/lteevm.html#d126e34932).
Here is a demonstration:
rng('default');
% Define reference (ideal) signal vector
r = [0.707+0.707i, -0.707+0.707i, -0.707-0.707i, 0.707-0.707i];
% Add AWGN to the reference signal to simulate the received signal
% The second argument specifies the SNR (Signal-to-Noise Ratio) in dB
snr = 3; % Example SNR value, adjust this to simulate different noise levels
s = awgn(r, snr, 'measured');
% Calculate EVM using comm.EVM
evm_metric = comm.EVM;
% Correct argument order for comm.EVM: (reference signal, received signal)
comEVMRMS_result = evm_metric(r', s')
comEVMRMS_result = 85.3031
% Correct argument order for lteEVM: (input array, reference signal)
lteEVM_result = lteEVM(s', r');
lteEVMRMS_result = lteEVM_result.RMS*100 % in '%'
lteEVMRMS_result = 85.3031
% Check if both EVM results are the same (within a small tolerance to account for numerical precision)
tolerance = 1e-4; % Define a small tolerance
if abs(comEVMRMS_result - lteEVMRMS_result) < tolerance
disp('Both EVM results are the same.');
else
disp('EVM results differ.');
end
Both EVM results are the same.
I hope this helps!
Anu 2024년 4월 2일

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

R2022a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by