Основы теории кодирования. Учебное пособие [Б. Д. Кудряшов] (pdf) читать постранично, страница - 113

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

символов при передаче противоположными сигналами по
каналу с гауссовским шумом.

348

11. Коды с малой плотностью проверок на четность

Алгоритм 11.1. Алгоритм распространения доверия
Input: Логарифмы отношений правдоподобия кодовых

символов 𝑦 = (𝑦1 , ..., 𝑦𝑛 ), максимальное число
итераций ITER, массивы ненулевых позиций столбцов
𝐶𝑖 𝑖 = 1, ..., 𝑛, и строк 𝑉𝑗 , 𝑗 = 1, ..., 𝑟
Output:
Жесткие решения 𝑥 = (𝑥1 , ..., 𝑥𝑛 )
1. Инициализация
for 𝑖 = 1 to 𝑛 do
for 𝑗 = 1 to 𝑟 do
𝐿(𝑗, 𝑖) = 𝑍(𝑗, 𝑖) = 0;
end
end

2. Основной цикл
for 𝑖𝑡𝑒𝑟 = 1 to 𝐼𝑇 𝐸𝑅 do
for 𝑖 = 1 to 𝑛 do
for 𝑗 = 1 to 𝑟 do
∑︁
𝐿(𝑗, 𝑖) = 𝑦𝑖 +

𝑍(ℎ, 𝑖)

ℎ∈𝐶𝑖 ,ℎ̸=𝑗

end
end
for 𝑖 = 1 to 𝑛 do
for 𝑗 = 1 to 𝐽 do

𝛼ℎ𝑗 = sign(𝐿(ℎ,
𝑗)), ⎞ ⎛

∏︁
∑︁
𝑍(𝑗, 𝑖) = ⎝
𝛼ℎ𝑗 ⎠ 𝑓 ⎝
ℎ∈𝑉𝑗 ,ℎ̸=𝑖


𝑓 (|𝐿(ℎ, 𝑗)|)⎠

ℎ∈𝑉𝑗 ,ℎ̸=𝑖

end
end
for 𝑖 = 1 to 𝑛 do

𝑦^𝑖 = 𝑦𝑖 +

∑︁

𝑍(ℎ, 𝑖) % Мягкие решения

ℎ∈𝐶𝑖

𝑥𝑖 = 𝑦^𝑖 < 0 % Жесткие решения
end

𝑠 = 𝑥𝐻 . % Синдром
if 𝑠 = 0 then return 𝑥
% Декодирование закончено
end
return 𝑥;

11.2. Декодирование по принципу распространения доверия

349

Заметим, что вычисление произведения переменных 𝛼 не требует умножения чисел. Таким образом, единственная затратная операция — вычисление функции логарифма гиперболического тангенса 𝑓 (·). При реализации в реальных системах эти вычисления
выполняются таблично либо применяются аппроксимации (см. параграф 10.3.3).
Программа 11.1. Декодирование по принципу распространения доверия
function [ hard , soft , iter ]= bp_decod (y ,V ,C ,H , MAXITER )
% Вход :
%
y - последовательность на выходе канала
%
V - ненулевые позиции проверок по строкам
%
C - ненулевые позиции проверок по столбцам
%
H - проверочная матрица
%
MAXITER -- максимальное число итераций
% Выход
%
hard - жесткие решения
%
soft - мягкие решения
%
iter - число итераций до принятия решения .
% Пример вызова
%
[V , C ]= bp_prepare ( H ) ;
% подготовка массивов
%
noise = sigma * randn (1 , n ); % формирование шума
%
out =(2* code_word -1) + noise ;
% выход канала ;
%
out = -2* out / sigma ^2:
% нормализация
%
[ hard , soft , iter ]= bp_decod ( out , V , C , H ) ;
% Инициализация
if nargin ==4 , MAXITER =50; end ;
[r , n ]= size (H ) ;
Z = zeros (r , n) ;
L = zeros (r , n) ;
hard =y