From 41472f6f77eebdd694b23937fa5ce6953cf3f3ee Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Tue, 26 Dec 2023 13:40:29 +0100 Subject: [PATCH] allow up to 10% of constellation point distance --- encode.cc | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/encode.cc b/encode.cc index 920bb49..5edf09c 100644 --- a/encode.cc +++ b/encode.cc @@ -86,7 +86,7 @@ struct Encoder temp[i] /= std::sqrt(value(symbol_len/4)); cmplx err = temp[i] - fdom[i]; value mag = abs(err); - value lim = 0.1; + value lim = 0.1 * mod_distance(); if (limit && mag > lim) temp[i] -= ((mag - lim) / mag) * err; } else { @@ -212,6 +212,18 @@ struct Encoder } return 0; } + value mod_distance() + { + switch (mod_bits) { + case 2: + return PhaseShiftKeying<4, cmplx, code_type>::DIST; + case 4: + return QuadratureAmplitudeModulation<16, cmplx, code_type>::DIST; + case 6: + return QuadratureAmplitudeModulation<64, cmplx, code_type>::DIST; + } + return 2; + } void shuffle(code_type *c) { switch (code_order) {