From c7d801904eba4dc053056159ea83bc5f7f25472a Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Wed, 2 Jul 2025 07:32:01 +0200 Subject: [PATCH] don't touch the pilots when clipping --- encode.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/encode.cc b/encode.cc index 110c713..a79c090 100644 --- a/encode.cc +++ b/encode.cc @@ -86,15 +86,20 @@ struct Encoder } fwd(temp, tdom); for (int i = 0; i < symbol_len; ++i) { - if (norm(fdom[i])) { - temp[i] *= 1 / (scale * symbol_len); - cmplx err = temp[i] - fdom[i]; + int j = bin(i + tone_off); + if (i >= tone_count) { + temp[j] = 0; + } else if (i % block_length == pilot_off) { + temp[j] = fdom[j]; + } else if (i % block_length == reserved_off) { + temp[j] = 0; + } else { + temp[j] *= 1 / (scale * symbol_len); + cmplx err = temp[j] - fdom[j]; value mag = abs(err); value lim = 0.1 * mod_distance(); if (limit && mag > lim) - temp[i] -= ((mag - lim) / mag) * err; - } else { - temp[i] = 0; + temp[j] -= ((mag - lim) / mag) * err; } } bwd(tdom, temp);