⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldpc.m

📁 ldpc译码器 目前通信系统中很多标准都在采用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 + -