des00 25 21 ноября, 2018 Опубликовано 21 ноября, 2018 · Жалоба 34 minutes ago, gegel said: Это именно то, что мне нужно. Но, если можно, дайте ссылку или скажите, как это сделать в данном конкретном случае (с тремя битами). вроде указал в какой книге по кодированию это рассмотрено и какой алгоритм. Алгоритм распространения доверия используется для декодирования LDPC. С атачами проблема на форуме, поищите статью Iterative Decoding of Binary Block and Convlutional Codes Joachim Hagenauer, Fellow, ZEEE, Elke Offer, and Lutz Papke там рассмотрен 2D турбокод на основе кодов проверки на четность на 2 бита данных и 1 бит четности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gegel 0 21 ноября, 2018 Опубликовано 21 ноября, 2018 · Жалоба Обдумал посты Милливольта о подсчете 4-х суммарных корреляционных коэффициентов для возможных комбинаций бит с учетом XOR, и des00 о передачей доверия. Получается где-то так: k0, k1, kс - входные корреляционные коэффициенты для двух информационных и контрольного битов LLR0, LLR1 - искомые выходные LLR двух информационных битов Возможные варианты комбинаций битов с учетом XOR и их суммарные коэффициенты (это не совсем идеально, как в варианте с полной корреляцией в предложении Милливольта, но по сути то же): 00 0 a=-k0-k1-kc 10 1 b=k0-k1+kc 01 1 c=-k0+k1+kc 11 0 d=k0+k1-kc Позитивные (бит входит в комбинацию) и негативные (бит не входит в комбинацию) вероятности для информационных битов 0 и 1: p1 = MAX(c,d) n1 = MAX(a,b) p0 = MAX(b,d) n0 = MAX(a,c) где MAX - функция Max-log апроксимации через Якобиановский логарифм (или в крайнем случае просто максимальное значение из двух аргументов с учетом знака) LLR0 = p0-n0 LLR1 = p1-n1 Вопрос больше к des00: вы это имели в виду? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба 19 hours ago, gegel said: Вопрос больше к des00: вы это имели в виду? Не совсем это. Если я правильно понял указанный вывод, вы учли только "внешнюю" (extrinsic) информацию, накладываему кодом. Но не учли канальную метрику самого бита. Название статьи я привел, вторая ссылка с яндекса http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=1754371172EC5911DAFDF1176130A4B5?doi=10.1.1.65.7007&rep=rep1&type=pdf раздел C. Principle of Iterative Decoding Algorithms -> Tutorial Example with the (3,2,2) Single Parity Check Code as Component Code: там есть пример как вычислить метрику битов, с учетом канальной метрики и метрики кода (extrinsic) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gegel 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба Спасибо, просмотрел. Но, как Вы верно заметили в предыдущем посту, у меня предполагалось что-то типа каскадного кода. На сколько я понял, статья относится к вашему замечанию о возможности уточнить метрику пары в самом турбодекодере, и для этого нужно немного поправить калькулятор расчета метрик в декодере. Исходники турбо-декодера есть, но нету соответствующего скилла и, главное, времени его нарабатывать. Поэтому выбор и пал на каскадный вариант с готовым турбокодом. Но интересно другое: базируясь на моих вышеприведенных рассуждениях и школьной арифметике, вывел простые формулы получения LLR информационных бит (без MAX-log аппроксимации, используя максимальное значение): LLR0 = 2*k0+abs(k1-kc)-abs(k1+kc); LLR1 = 2*k1+abs(k2-kc)-abs(k2+kc); На первый взгляд выглядит идеально, возвращая скорректированные LLR при ошибке четности, и нулевые в неопределенной ситуации (когда две входящие метрики совпадают при ошибке четности). Но на практике при подаче на турбодекодер дает результат хуже, чем способ, предложенный в самом начале Grizzly: просто инвертировать метрику информационного бита при ошибке четности. Так что в моих рассуждениях где-то фундаментальная ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба Во-первых, хочу признать, что был неправ по поводу коррекции LLR @gegel а как вы получили такие аппроксимации, как в последнем сообщении? В предыдущих ваших выкладках всё правильно. Произведение вероятностей заменяются на суммы при работе с LLR, а дальше Якобиан или max-аппроксимация. Не совсем понял, откуда появились модули. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 (изменено) · Жалоба 3 hours ago, gegel said: Но на практике при подаче на турбодекодер дает результат хуже, чем способ, предложенный в самом начале Grizzly: просто инвертировать метрику информационного бита при ошибке четности. Так что в моих рассуждениях где-то фундаментальная ошибка. А проверяли ли Вы коррелятор? Может быть, не фундаментальная. а обычная ошибка? Изменено 22 ноября, 2018 пользователем Милливольт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gegel 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба 6 hours ago, Grizzly said: Во-первых, хочу признать, что был неправ по поводу коррекции LLR @gegel а как вы получили такие аппроксимации, как в последнем сообщении? В предыдущих ваших выкладках всё правильно. Произведение вероятностей заменяются на суммы при работе с LLR, а дальше Якобиан или max-аппроксимация. Не совсем понял, откуда появились модули. Так вот в том и проблема, что теоретически неверно, но на практике работает лучше, чем то, что верно. Но всему есть причина, буду копать глубже. Формулы получил, рассуждая следующим образом (с самого начала): четыре верных варианта комбинации двух информационных и контрольного бита и их общие корреляционные коэффициенты как сумма коэффициентов индивидуальных бит, взятая с соответствующим знаком: k0 k1 kc 0 0 0 a=-k0-k1-kc 0 1 1 b=-k0+k1+kc 1 0 1 c=k0-k1+kc 1 1 0 d=k0+k1-kc Если искомый бит входит в комбинацию, добавляем его в положительную вероятность, если не входит, то в отрицательную. Самой грубым вариантом сложения вероятностей есть MAX, т.е. выбор большего значения из двух с учетом знака: p0 = MAX(c,d) n0 = MAX(a,b) llr0 = p0-n0 p1 = MAX(b,d) n0 = MAX(a,c) llr1 = p1-n1 Распишем, например, для бита 0: p0 = k0-k1+kc или k0+k1-kc (большее). Вынесем k0: k0-(k1-kc) или k0+(k1-kc) n0 = -k0-k1-kc или -k0+k1+kc (большее). Вынесем -k0: -k0-(k1+kc) или -k0+(k1+kc) Как видно, выражения справа отличаются знаком части в скобках. Поэтому максимальным из двух будет то, у которого велична в скобках максимальная. А так как она отличается знаком, то, соответственно, максимальным будет то выражение, у которого величина в скобках положительная. (функция MAX сравнивает с учетом знака!). Т.е. можно переписать так: p0 = k0+abs(k1-kc) n0=-k0+abs(k1+kc), откуда LLR0 = p0-n0 = 2*k0+abs(k1-kc)-abs(k1+kc) Аналогично для LLR1. Возможно, где-то я и ошибся, может, поправят добрые люди... 4 hours ago, Милливольт said: А проверяли ли Вы коррелятор? Может быть, не фундаментальная. а обычная ошибка? Скажите - как, проверю :) Коррелирую, конечно, не с наработанным паттерном сигнала, а с чистым синусом (для когерентной BPSK). Т.к. синус симметричный, то все сводится к k = s0+2*s1+s2-s3-2*s4-s5 ( у меня для облегчения жизни используется точно 6 АЦП сэмплов на период несущей, и они кодируют один бит). Именно это k и используется в формулах выше. Это верно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба 1 hour ago, gegel said: Коррелирую, конечно, не с наработанным паттерном сигнала, а с чистым синусом (для когерентной BPSK). Т.к. синус симметричный, то все сводится к k = s0+2*s1+s2-s3-2*s4-s5 ( у меня для облегчения жизни используется точно 6 АЦП сэмплов на период несущей, и они кодируют один бит). Именно это k и используется в формулах выше. Это верно? Ну да, для нормированной R синус с синусом должен дать +1,0, синус с противофазным синусом -1,0, синус с косинусом - 0. Реальные, понятно, около 0.98 или что-то вроде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 (изменено) · Жалоба @gegel то есть даже формулы, которые с MAX, а не abs, дают худший результат по сравнению со сменой знака менее надёжного решения? Изменено 22 ноября, 2018 пользователем Grizzly Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 22 ноября, 2018 Опубликовано 22 ноября, 2018 · Жалоба Кстати, а что происходит с "жёсткими" решениями после разных коррекций LLR? И какая модель канала? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба 21 hours ago, gegel said: Спасибо, просмотрел. Но, как Вы верно заметили в предыдущем посту, у меня предполагалось что-то типа каскадного кода. На сколько я понял, статья относится к вашему замечанию о возможности уточнить метрику пары в самом турбодекодере, и для этого нужно немного поправить калькулятор расчета метрик в декодере. Исходники турбо-декодера есть, но нету соответствующего скилла и, главное, времени его нарабатывать. Поэтому выбор и пал на каскадный вариант с готовым турбокодом. Хммм.....В статье указан пример двух кодов проверки на четность. Рассмотрим эту статью. Рассмотрим ту строку, которая с ошибкой. Правило кодирования из статьи 0/1 -> +1/-1. Кодирование: данные 01 -> четность 1 -> кодовое слово 011 Канальные метрики на входе декодера проверки на четность: 4.0, 1.0, -1.5. Т.е. ошибка во втором бите данных. Вероятность говорит что это слабый ноль. Используем сложение вероятностей, получем внешние метрики(экстринсики) для битов данных -1,0, -1.5. Формула приведена в статье Lextr(u XOR p) = sign(u)*sign(p)*min(|u|,|p|). Используем то что дал код и уточняем метрики битов : 3.0, -0.5. Т.е. метрика второго бита, стала очень слабая единица (положим дискрет метрики 0.5). Метрика первого бита, была очень сильный ноль, стала сильный ноль. (т.е. ошибка уже тут исправилась). И вот это, уже подать на вход турбодекодера. ЗЫ. Как вы заметили, произошло перераспределение вероятностей метрик, та что была очень сильной стала слабее, но та что была слабой, стала сильнее. Это однопроходное декодирование. в 2Д декодерах потом уточняют другими проходами и метрики там растут в очень сильные, если декодер сходится) ЗЗЫ.Кстати это аналог инверсии жесткого решения слабого бита, что у вас работает лучше). Турбодекодеру не сильно принципиально это) можно даже попробовать стирать слабые метрики в словах, где четность не совпадает. Декодер это прожует) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба Grizzly И какая модель канала? Хороший вопрос. Насколько я понял, канал - речевой кодек с потерей пакетов типа GSM. Т. е. все эти методы модуляции и кодирования для традиционных модемов для каналов с линейными искажениями и АБГШ бессмысленно использовать. Нужно кумекать над ансамблем сигналов, которые хорошо на выходе кодека разделяются, над кодированием и синхронизацией которые устойчивы к вырезанию части сигнала во времени т. п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба 1 hour ago, petrov said: Grizzly И какая модель канала? Хороший вопрос. Насколько я понял, канал - речевой кодек с потерей пакетов типа GSM. Т. е. все эти методы модуляции и кодирования для традиционных модемов для каналов с линейными искажениями и АБГШ бессмысленно использовать. Нужно кумекать над ансамблем сигналов, которые хорошо на выходе кодека разделяются, над кодированием и синхронизацией которые устойчивы к вырезанию части сигнала во времени т. п. Вы совершенно, т.е. абсолютно правы! Этот канал никак гауссовыми моделями не описывается (и непонятно, какими может быть строго описан вообще). Наша фирма имеет 16 летний опыт передачи через этот канал собственным кодеком, передается около 100000 (NB!) цифровых электрокардиограмм в год. Дело шло очень тяжело, в процессе разработки два раза меняли тип модуляции, бессчетно - кодирование. Но у ув. gegel свой модем, который имеет (на мой взгляд) хорошие перспективы, однако у него и требования к выходному BER несколько выше. И именно ансамбль сигналов, как Вы выражаетесь, действительно определяет успех/неуспех. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба 2 часа назад, Милливольт сказал: Вы совершенно, т.е. абсолютно правы! Этот канал никак гауссовыми моделями не описывается (и непонятно, какими может быть строго описан вообще). Наша фирма имеет 16 летний опыт передачи через этот канал собственным кодеком, передается около 100000 (NB!) цифровых электрокардиограмм в год. Дело шло очень тяжело, в процессе разработки два раза меняли тип модуляции, бессчетно - кодирование. Но у ув. gegel свой модем, который имеет (на мой взгляд) хорошие перспективы, однако у него и требования к выходному BER несколько выше. И именно ансамбль сигналов, как Вы выражаетесь, действительно определяет успех/неуспех. Дык, есть же практически готовые решения. Ecall, например. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Милливольт 0 23 ноября, 2018 Опубликовано 23 ноября, 2018 · Жалоба Автору темы она не подойдет точно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться