EVM in radial and circumferential directions?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Jerry Malone
am 8 Okt. 2023
Kommentiert: Jerry Malone
am 22 Okt. 2023
Can comm.EVM measure EVM in the radial and circumferential (i.e., along the unit circle) directions separately?
2 Kommentare
Akzeptierte Antwort
Abhimenyu
am 18 Okt. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Synchronization and Receiver Design finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!