📄 ldpc.m
字号:
H = [0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0;
1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0;
0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0;
0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1;
0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0;
0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0;
0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0;
0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1;
1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1;
1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0];
[rowH, colH] = size(H);
iteration_number = 10;
block = 1;
x = randint(10*block,1,2);
coded_msg = x'*H;
coded_msg = 2*coded_msg-1;
deviation = 1/(10^(snr/10));
code_noise = coded_msg+sqrt(deviation)*randn(length(coded_msg),1);
msg_ctov = zeros(rowH, 6);
msg_vtoc = zeros(colH, 3);
for i = 1:iteration_number
% Calculate LLR message past from v nodes to c nodes
for v_node = 1: colH
edge_of_v = edge_set_of_v(v_node, H); % find the c nodes connected to current v node
for c_node = 1:3 % each v node connects to 3 c nodes
msg_vtoc(v_node,c_node) = init_msg(v_node); % initialize
for k = 1:3
if k ~= c_node
index = find(edge_set_of_c(edge_of_v(k),H) == v_node);
msg_vtoc(v_node,c_node) = msg_vtoc(v_node,c_node) + msg_ctov(edge_of_v(k),index);
end
end
alpha_msg_vtoc(v_node,c_node) = sign(msg_vtoc(v_node,c_node))*(log(1+exp(-abs(msg_vtoc(v_node,c_node))))-log(1-exp(-abs(msg_vtoc(v_node,c_node)))));
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -