1.问题描述:
LDPC的信道编译码的matlab仿真——LDPC译码最小和和归一化最小和
2.部分程序:
clc; clear all;
load H;
D=H(1:675,5401:6075);
%-------下面是通过H求G的过程,假设D的第1,2列子矩阵的第一列为相关的-----------
G=zeros(5402,6075);
Gs_g=zeros(5400,675);
Q_q=zeros(2,675);
Dlose=D; Dlose(:,226)=[]; Dlose(:,1)=[];
%--------求系统部分 Gs 利用Mi*uT+D*ziT=0 共求24个zi,得到Gs里面的非单位阵部分Gs_g-----
Zi=zeros(24,675);
Gs_gtemp=zeros(225,675);
for tNum=1:24
tNum
MiuT=H(:,(tNum-1)*225+1);
Zi1=solveAX(Dlose,MiuT); %求解 AX=B的解向量
Zi(tNum,[2:225 227:675])=Zi1(1:673);
Gs_gtemp=cycleG(Zi(tNum,:)); %由循环子向量的第一行得到对应的子循环矩阵
Gs_g((tNum-1)*225+1:tNum*225,:)=Gs_gtemp;
end
%%---------下面是求解G矩阵中的Qs部分 利用D*g=0---------
Q1_q=solveAX(Dlose,D(:,1));
Q2_q=solveAX(Dlose,D(:,226));
Q_q(1,[2:225 227:675])=Q1_q(1:673);
Q_q(1,1)=1;
Q_q(2,[2:225 227:675])=Q2_q(1:673);
Q_q(2,226)=1;
G(1:5400,1:5400)=eye(5400);
G(1:5400,5401:6075)=Gs_g;
G(5401:5402,5401:6075)=Q_q;
textHG=mod(H*G',2);
3.仿真结论:
C-58