Vector LDPC:硬判决译码算法
我正在使用位翻转解码[硬判决]进行一位翻转 我遵循了以下Vector LDPC:硬判决译码算法,vector,decode,Vector,Decode,我正在使用位翻转解码[硬判决]进行一位翻转 我遵循了以下H_矩阵:“对于位翻转算法,沿着Tanner图边缘传递的消息也是二进制的:位节点发送一条消息,声明它是1还是0,每个检查节点向每个连接的位节点发送一条消息,根据检查节点可用的信息声明位的值 如果输入位值的模2和为零,则检查节点确定满足其奇偶校验方程。如果bit节点接收的大多数消息与其接收值不同,则bit节点将更改(翻转)其当前值。重复此过程,直到满足所有奇偶校验方程 正确的码字=[10010101] H矩阵[4][8]={0,1,0,1,1
H_矩阵
:“对于位翻转算法,沿着Tanner图边缘传递的消息也是二进制的:位节点发送一条消息,声明它是1还是0,每个检查节点向每个连接的位节点发送一条消息,根据检查节点可用的信息声明位的值
如果输入位值的模2和为零,则检查节点确定满足其奇偶校验方程。如果bit节点接收的大多数消息与其接收值不同,则bit节点将更改(翻转)其当前值。重复此过程,直到满足所有奇偶校验方程
正确的码字=[10010101]
H矩阵[4][8]={0,1,0,1,1,0,0,1},{1,1,1,0,0,1,0,0},{0,0,1,0,0,0,1,1},{1,0,0,1,1,1,0,1}
ReceivedCodeWord[8]={1,0,1,1,0,1}代码>//错误代码字
我需要得到[10010101]
,但是我得到[10010001]
的receivedDoward[8]={1,0,1,1,0,1}
但对于其他可能收到的德沃德,我的回答是正确的
e、 g.收到Deword[0000101]
我得到了正确的码字[10010101]
ReceivedDoward[11010101]
我得到了正确的码字[10010101]
疑问:为什么对于ReceivedCodeWord{1,0,1,1,0,1,0,1}
我得到了[10010001]
,这是完全错误的。请给我解释一下
这是
谢谢这是由您使用的线性块代码引起的。首先,该码不是LDPC码,因为H
martix不满足行-列约束(例如,第3列和第6列在两个相同位置有1)
(1)当收到{1,0,1,1,0,1,0,1}
时,校验和为{0,1,1,0}
。如果使用多位翻转解码算法,这意味着在一次迭代中可以翻转多个位,第3个变量节点和第6个变量节点将一起翻转,因为它们都连接两个未满足的检查节点,那么第一次迭代后的结果将是{1,0,0,1,0,0,0,1}
。在第二次迭代期间,校验和仍然是{0,1,1,0}
,因此第3个变量节点和第6个变量节点将再次翻转,此过程将在以后的迭代中重复
(2)此代码的最小汉明距离为2,因此此代码可以检测1个错误并更正0.5个错误。即使使用单比特翻转解码算法,也有50%的概率将接收到的码字{1,0,1,1,0,1}
解码为另一个有效码字{1,0,1,1,0,0,0,1}
谢谢。很抱歉反应太晚;)