Всем здравствуйте!
Написал вот реализацию турбодекодера, которая на вход принимает мягкие решения. На абстрактных мягких решениях в вакууме (симуляция) вроде бы работает. А вот как вырабатывать эти мягкие решения на практике - мне не совсем понятно. Не сталкивался никогда раньше.
Конкретно, мне нужно вырабатывать их для трёх видов модуляции - QPSK, QAM-16 и QAM-64. Где-то в чьём-то коде видел, что для QPSK берут вещественную и мнимую компоненту в качестве мягких решений для первого и второго бита соответственно. Однако я не понимаю, почему это правильно. Ведь если разобраться, то мягкое решение для турбодекодера - это log likelyhood ratio (llr), то есть llr® = log(P(r=1)/P(r=0)). То есть если llr® = 0, то принятый бит r с вероятностью 0,5 может быть 0 и 1. И чем дальше от нуля llr® находится, тем вероятней, что это 0 (если llr < 0) или 1 (если llr > 0).
Теперь допустим у нас есть канал с белым гаусовым шумом и созведие QPSK, в котором есть четыре точки (s; s) = 00, (-s; s) = 01, (-s;-s) = 11 и (s; -s)=10, где s = sqrt(2)/2. И есть принятая точка (x; y). Теперь, чтобы расчитать llr для первого бита, надо вероятность того, что было передано (-s; s) или (-s; -s), поделить на вероятность того, что было передано (s; s) или (s; -s), и взять логарифм. Каждая такая вероятность зависит от растояния между точкой (x; y) и соответствующей точкой сигнального созвездия. Понятно, что делается упрощение и берется расстояние между (x; y) и ближайшей точкой соответсвующей 0 и 1. Но ведь llr должен зависеть также и от SNR. То есть допустим если мы приняли (x; y) = (s; s), то вероятность того что была принята комбинация 00 будет одна, если SNR = 3дб, и совсем другая - если 100дб - а значит и мягкие решения от этого зависят тоже.
Так вот - как ввиду вышеизложенного прийти к тому, что мягкие решения для QPSK вырабатывать путём взятия вещественной и мнимой части символа? И что делать в более сложных созвездиях QAM-16 и QAM-64?
|