EVM in radial and circumferential directions?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Jerry Malone
il 8 Ott 2023
Commentato: Jerry Malone
il 22 Ott 2023
Can comm.EVM measure EVM in the radial and circumferential (i.e., along the unit circle) directions separately?
2 Commenti
Risposta accettata
Abhimenyu
il 18 Ott 2023
Hi Jerry,
I understand that you want to measure EVM in radial and circumferential direction separately. ‘comm.EVM’ object measures the root mean squared (RMS) EVM, maximum EVM, and percentile EVM of a received signal. It gives overall EVM as a percentage of distance from the origin to ideal point. It does not separate the radial and circumferential components.
Please follow the example code below to understand the EVM measurements in different directions:
% Generate a reference signal (QPSK)
constellation = [-1-1i, -1+1i, 1-1i, 1+1i];
refSignal = constellation(randi([1, 4], 1000, 1));
% Generate a modulated signal with noise and distortion
SNR_dB = 20; % Signal-to-noise ratio in decibels
modSignal = awgn(refSignal, SNR_dB, 'measured'); % Add white Gaussian noise
modSignal = modSignal + 0.1 * exp(1i * pi / 4); % Add constant phase offset
modSignal = modSignal .* (1 + 0.2 * (randn(size(modSignal)))) + 1i * randn(size(modSignal)); % Add random amplitude and phase variation
% Compute the error vector
errorVector = modSignal - refSignal;
% Compute the radial component of the error vector
radialErrorVector = abs(errorVector);
% Compute the circumferential component of the error vector
circumferentialErrorVector = angle(errorVector);
% Calculate the RMS values of the radial and circumferential errors
rmsRadialError = rms(radialErrorVector);
rmsCircumferentialError = rms(circumferentialErrorVector);
% Normalize the error values by the magnitude of the reference signal to obtain the EVM in each direction
evmRadial = 100 * rmsRadialError / mean(abs(refSignal))
evmCircumferential = 100 * rmsCircumferentialError / mean(abs(refSignal))
Please follow the MATLAB documentation link below to learn more about the ‘comm.EVM’ object:
I hope this helps!
Thanks,
Abhimenyu
2 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Synchronization and Receiver Design in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!