/* Siglib Error Vector Magnitude (EVM) test program */ #include #include void main (void) { SLData_t ErrorVector, ErrorVectorMagnitudePercent, ErrorVectorMagnitudeDecibels; SLComplexRect_s IdealConstellationPoints [] = { { 1.0, 0.0}, { 1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}, }; SLComplexRect_s ReceivedConstellationPoints [] = { { 1.0, 0.0}, { 1.0, -1.0}, {-1.0, 0.0}, { 0.9, 0.0}, { 1.0, 0.1}, }; ErrorVector = SDS_ErrorVector (IdealConstellationPoints[0], ReceivedConstellationPoints[0]); ErrorVectorMagnitudePercent = SDS_ErrorVectorMagnitudePercent (IdealConstellationPoints[0], ReceivedConstellationPoints[0]); ErrorVectorMagnitudeDecibels = SDS_ErrorVectorMagnitudeDecibels (IdealConstellationPoints[0], ReceivedConstellationPoints[0]); printf ("Ideal point = 1+j0, Received point = %lf + j%lf\nError Vector = %lf\n", ReceivedConstellationPoints[0].real, ReceivedConstellationPoints[0].imag, ErrorVector); printf ("EVM (Percent) = %lf, EVM (dB) = %lf\n\n", ErrorVectorMagnitudePercent, ErrorVectorMagnitudeDecibels); ErrorVector = SDS_ErrorVector (IdealConstellationPoints[0], ReceivedConstellationPoints[1]); ErrorVectorMagnitudePercent = SDS_ErrorVectorMagnitudePercent (IdealConstellationPoints[0], ReceivedConstellationPoints[1]); ErrorVectorMagnitudeDecibels = SDS_ErrorVectorMagnitudeDecibels (IdealConstellationPoints[0], ReceivedConstellationPoints[1]); printf ("Ideal point = 1+j0, Received point = %lf + j%lf\nError Vector = %lf\n", ReceivedConstellationPoints[1].real, ReceivedConstellationPoints[1].imag, ErrorVector); printf ("EVM (Percent) = %lf, EVM (dB) = %lf\n\n", ErrorVectorMagnitudePercent, ErrorVectorMagnitudeDecibels); ErrorVector = SDS_ErrorVector (IdealConstellationPoints[0], ReceivedConstellationPoints[2]); ErrorVectorMagnitudePercent = SDS_ErrorVectorMagnitudePercent (IdealConstellationPoints[0], ReceivedConstellationPoints[2]); ErrorVectorMagnitudeDecibels = SDS_ErrorVectorMagnitudeDecibels (IdealConstellationPoints[0], ReceivedConstellationPoints[2]); printf ("Ideal point = 1+j0, Received point = %lf + j%lf\nError Vector = %lf\n", ReceivedConstellationPoints[2].real, ReceivedConstellationPoints[2].imag, ErrorVector); printf ("EVM (Percent) = %lf, EVM (dB) = %lf\n\n", ErrorVectorMagnitudePercent, ErrorVectorMagnitudeDecibels); ErrorVector = SDS_ErrorVector (IdealConstellationPoints[0], ReceivedConstellationPoints[3]); ErrorVectorMagnitudePercent = SDS_ErrorVectorMagnitudePercent (IdealConstellationPoints[0], ReceivedConstellationPoints[3]); ErrorVectorMagnitudeDecibels = SDS_ErrorVectorMagnitudeDecibels (IdealConstellationPoints[0], ReceivedConstellationPoints[3]); printf ("Ideal point = 1+j0, Received point = %lf + j%lf\nError Vector = %lf\n", ReceivedConstellationPoints[3].real, ReceivedConstellationPoints[3].imag, ErrorVector); printf ("EVM (Percent) = %lf, EVM (dB) = %lf\n\n", ErrorVectorMagnitudePercent, ErrorVectorMagnitudeDecibels); ErrorVector = SDS_ErrorVector (IdealConstellationPoints[0], ReceivedConstellationPoints[4]); ErrorVectorMagnitudePercent = SDS_ErrorVectorMagnitudePercent (IdealConstellationPoints[0], ReceivedConstellationPoints[4]); ErrorVectorMagnitudeDecibels = SDS_ErrorVectorMagnitudeDecibels (IdealConstellationPoints[0], ReceivedConstellationPoints[4]); printf ("Ideal point = 1+j0, Received point = %lf + j%lf\nError Vector = %lf\n", ReceivedConstellationPoints[4].real, ReceivedConstellationPoints[4].imag, ErrorVector); printf ("EVM (Percent) = %lf, EVM (dB) = %lf\n\n", ErrorVectorMagnitudePercent, ErrorVectorMagnitudeDecibels); }