最近几天重新复习了有关信息编码的知识,首先跟大家推荐两本书吧。

《数字通信原理与技术》(北京邮电出版社的)

《ldpc原理与应用》

首先先搞清几个概念。

1.什么是分组码?

每个码组的监督码元仅与该码组的信息码元有关,而与其他码组的信息码元无关,这类码称为分组码。在分组码中,监督码元仅监督本码组中的信息码元。

编码效率R=k/n,k是信息位,n-k是监督位,R越大,信息位所占的比重越大,码组传输信息的有效性越高。所以,R说明了分组码传输信息的有效性。d0表示最小码距。d0越大,则从一个码组错为另一个码组的可能性越小,因而检错、纠错能力也就越强。

d0表示最小码距。d0越大,则从一个码组错为另一个码组的可能性越小,因而检错、纠错能力也就越强。

如果码组集合中码组间的最小码距满足:

   d0>=e+1

则该码集中的码组具有检测e位错码的能力。

如果d0>=2t+1,则该码集中的码组具有纠正t个错码的能力。

如果d0>=t+e+1(e>t),则该码集中的码组具有纠正t个错码,并检测e个错码的能力。

2.什么是线性码?

线性码中的信息位和监督位是由线性代数方程联系着的。或者说,线性码是按一组线性方程构成的。

3.监督矩阵(或者校验矩阵)H到底表示什么?

H表示的是监督位和信息位之间的关系,只要H给定,编码时监督位和信息位的关系就完全确定了,H的行数就是监督位的数目r。H的每行中1的位置表示相应码元之间存在的监督关系。例如,H的第一行1110100表示监督位a2是由a6a5a4之和决定的。

图传不上去,好气。

下面直接附上我用Python写的代码

已知生成矩阵G,求所有可能生成的码字:

import numpy as np
N=7
K=4G=np.array([[1,0,0,0,1,1,1],[0,1,0,0,1,1,0],[0,0,1,0,1,0,1],[0,0,0,1,0,1,1]])b=[]   #0000~1111的二进制数
for i in range(16):a=format(i,'b')b.append("{:0>4s}".format(a))v=np.zeros((16,4))
for i in range(16):v[i]=b[i]for j in range(4):v[i][j]=b[i][j] #v是从0000~1111的矩阵
#print(v)
v_=(np.dot(v,G))%2
#print(v_)
#print(v_[1][:4])for o in range(16):if np.all(v_[o][:4]==v[o]):print(v_[o])

已知校验矩阵H,求所有可能生成的码字:

import numpy as np
N=63
K=45H=np.array([[ 0,0,1,0,0,0,0,0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1 ,1 ,0 ,1 ,0 ,0 ,1 ,0 ,1 ,0 ,1 ,1 ,1 ,1 ,0 ,0, 1, 1, 0 ,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1,1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1 ,0 ,1 ,1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 ,0 ,0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0 ,1 ,1 ,0, 0, 1, 0 ,0 ,1, 1, 1, 1 ,1 ,0 ,0 ,1, 1, 0 ,1 ,0 ,0 ,1 ,0 ,1 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0 ,0 ,1 ,1 ,0 ,0 ,1, 1, 0, 0, 1, 0, 0, 0 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,1, 0, 0, 1, 1, 1, 1 ,1 ,0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1 ,0 ,1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0 ,0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 ,0, 0 ,0 ,0, 0, 1, 1, 0, 0, 1, 1, 0, 0 ,1, 0, 0, 0 ,0 ,0, 1, 1, 0, 0, 1, 0 ,0, 1, 1, 1 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,0 ,1 ,0 ,1 ,0 ,1 ,1 ,1 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0, 0, 0, 0, 0, 0 ,0],
[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0 ,0 ,1 ,0 ,0, 0, 0, 0, 1, 1 ,0 ,0 ,1 ,0 ,0 ,1 ,1 ,1 ,1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ,1 ,1 ,1 ,0 ,0 ,1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0 ,0 ,0, 1, 1 ,0 ,0 ,1, 1 ,0 ,0 ,1 ,0 ,0 ,0, 0, 0 ,1, 1, 0, 0, 1, 0, 0 ,1 ,1 ,1 ,1 ,1 ,0 ,0, 1, 1, 0 ,1 ,0 ,0 ,1 ,0 ,1 ,0 ,1 ,1 ,1 ,1 ,0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ,1 ,0 ,0, 1, 1, 0, 0 ,1 ,0 ,0 ,0, 0, 0, 1, 1, 0, 0 ,1 ,0 ,0, 1, 1 ,1 ,1 ,1, 0, 0 ,1 ,1, 0, 1 ,0 ,0 ,1, 0, 1 ,0 ,1, 1, 1, 1 ,0, 0, 1 ,1 ,0 ,0, 0 ,0 ,0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0, 1, 1, 0, 0 ,1 ,1 ,0 ,0, 1, 0 ,0, 0, 0 ,0 ,1, 1, 0, 0 ,1 ,0 ,0, 1 ,1 ,1, 1, 1 ,0, 0 ,1 ,1 ,0, 1 ,0 ,0, 1, 0 ,1 ,0 ,1 ,1, 1, 1 ,0 ,0 ,1, 1, 0 ,0 ,0, 0, 0 ,0],
[0, 0, 0, 0, 0 ,0 ,0 ,0, 0, 0 ,0 ,0, 1 ,1 ,0, 0 ,1, 1, 0 ,0 ,1 ,0, 0 ,0 ,0, 0 ,1, 1, 0, 0 ,1 ,0, 0 ,1 ,1 ,1, 1, 1 ,0 ,0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0],
[0 ,0 ,0 ,0 ,0 ,0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1 ,0 ,0 ,1 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,0 ,0, 1 ,1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0],
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,1 ,0, 0, 1, 0, 0, 0 ,0 ,0 ,1 ,1 ,0 ,0, 1 ,0 ,0 ,1 ,1 ,1 ,1, 1 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,0 ,1 ,0, 1, 0, 1, 1, 1, 1, 0, 0, 1 ,1 ,0 ,0 ,0],
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1, 1, 0, 0, 1, 1, 0, 0, 1, 0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0 ,1 ,0, 0, 1, 1, 1, 1, 1, 0 ,0 ,1 ,1 ,0 ,1, 0, 0 ,1, 0, 1, 0, 1, 1, 1, 1, 0 ,0 ,1 ,1 ,0 ,0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0 ,0 ,1 ,1 ,0 ,0, 1, 1, 0, 0, 1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,0, 1 ,0 ,0 ,1 ,1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 ,1, 0, 0, 1, 1, 0],
[0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 1, 1, 0, 0, 1, 1, 0 ,0 ,1 ,0 ,0 ,0 ,0, 0, 1 ,1 ,0, 0, 1 ,0, 0, 1, 1, 1, 1, 1 ,0 ,0 ,1 ,1 ,0 ,1, 0, 0, 1, 0, 1, 0, 1, 1 ,1 ,1 ,0 ,0, 1 ,1]])b=[]
for i in range(2**N):a=format(i,'b')b.append("{:0>63s}".format(a))v=np.zeros((2**N,N))
for i in range(2**N):v[i]=b[i]for j in range(N):v[i][j]=b[i][j] #v是0000000~1111111w=np.zeros((1,N-K))
for o in range(2**N):if np.all(np.dot(v[o],H.T)%2==w):print(v[o])

上面的这个校验矩阵是从网上找的BCH(63,45)的校验矩阵。

这个代码的逻辑是码字[a6 a5 a4 a3 a2 a1 a0]=[a6 a5 a4 a3]×G,所以[a6 a5 a4 a3]只要从0000~1111,找出满足这个等式关系的所有码字即可。

而已知H也是一样。因为H×[a6 a5 a4 a3 a2 a1 a0].T=0即可,.T在Python中表示转置。

我的目标是生成一堆LDPC的码字,然后根据论文《On Deep Learning-Based Channel Decoding》去改进,将原来的polar码改为LDPC码,看看性能有没有提高。

已知校验矩阵(监督矩阵)或生成矩阵G怎样生成所有可能码字相关推荐

  1. java正方形矩阵_已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵

    已知一个NxN的矩阵A,求矩阵中所有边长为m的正方形的子矩阵内元素的中位数.(m 例子: // m = 3 n = 5 // 01234 ݂         //  0 11357 ݂         ...

  2. java 像素矩阵_JAVA eclipse 中,已知灰度图像的像素矩阵怎么输出这个图像

    JAVA eclipse 中,已知灰度图像的像素矩阵如何输出这个图像? JAVA eclipse 中,已知灰度图像的像素矩阵如何输出这个图像?求指教. ------最佳解决方案------------ ...

  3. 哈夫曼树哈夫曼编码(已知A,B,C,D,E,F,G的概率分别为:17,25,50,67,40,60,30.画出其哈夫曼树和每个字符对应的哈夫曼编码)

    [也可以哈夫曼树与最优不等长编码] 已知A,B,C,D,E,F,G的概率分别为:17,25,50,67,40,60,30.画出其哈夫曼树和每个字符对应的哈夫曼编码.

  4. 已知原函数和导函数的关系_根据函数表达式该如何求函数值

    函数值求解习题练习第一讲,教你轻松学函数表达式 hello,这里是摆渡学涯,很高兴又在这里跟大家见面了,这次课程我们来结合练习题讲一下由函数表达式怎么求函数的值.教你轻松入门函数表达式. 基础习题之基 ...

  5. 已知矩阵 matlab,在MATLAB中,已知矩阵A,那么A(:,2:end)表示

    摘要: 已知供输工方.表示添资料准加剂.加及标应提原料有关的()的出国法等使用,品""进办理报检时口食.已知信息系统模型不包逻辑括(.... 已知 信息系统构化中的结方法设计,矩阵 ...

  6. [MATLAB]从已知矩阵中取出子阵

    首先要知道冒号表示法,如下: EX: 如上有4×6矩阵,假设我们要取出第一行,第二行,第四行,则可以有B=A([1 2 4],:) 假设要取出第一行,第二行,第四行的1-2列和4-6列,可以有B=A( ...

  7. matlab 当已知两个矩阵满足分别一定条件时_程序继续执行,MATLAB程序设计基础

    2.1常量与变量 2.1.1 特殊常量 变量名 功 能 说 明 ANS(ans) 缺省变量名,以应答最近一次操作运算结果 i或j 虚数单位 Pi 圆周率 NaN Not-a-number,表示不定值 ...

  8. python画矩阵图_Python根据已知邻接矩阵绘制无向图操作示例

    本文实例讲述了Python根据已知邻接矩阵绘制无向图操作.分享给大家供大家参考,具体如下: 有六个点:[0,1,2,3,4,5,6],六个点之间的邻接矩阵如表格所示,根据邻接矩阵绘制出相对应的图 0 ...

  9. 已知随机变量X的协方差矩阵求去X的特征值 特征向量 PCA投影矩阵

    已知随机变量X的协方差矩阵求去X的特征值 特征向量 PCA投影矩阵 相关的知识都忘记了,去查的时候没有耐心看别人长篇大论讲解,就只简单记录了一下如果从协方差矩阵来计算特征值和特征向量. 定义:1.特征 ...

最新文章

  1. (C++)1036 跟奥巴马一起编程
  2. 解决jQuery不同版同时引用的冲突
  3. 一些我们码代码过程中有用的小技巧
  4. iOS UITest之加载其他应用
  5. SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
  6. 机器学习相关从业者如何兼顾理论与工程能力
  7. java tld 方法重载_自定义标签
  8. HTML5 文本语义元素
  9. Java实现MySQL数据库备份(二)
  10. 电脑分辨率设置工具_打印不求人:我猜你并不会设置“分辨率”!
  11. [黑苹果双系统]macOS 12.4正式版OpenCore/Clover/winPE原版镜像
  12. 【NOIP2017】李电下棋
  13. 互联网晚报 | 12月2日 星期四 | 荣耀60系列正式发布;高通发布全新一代骁龙8移动平台;新东方在线布局教育智能硬件...
  14. 判断字符串是否对称 C语言,c语言 判断字符串是否中心对称
  15. sqlrelay mysql_sql relay 使用
  16. 智能化漏洞挖掘技术总结
  17. 柠檬班python自动化百度云_柠檬班python
  18. python后端开发学路线_【后端开发】Python要学哪些内容?Python程序员学习路线图...
  19. 金蝶EAS开发笔记(理论篇)
  20. Kaggle所有量化金融竞赛汇总。

热门文章

  1. 教育之星 计算机,冉冉升起的教育之星
  2. Python|计算圆柱体的表面积
  3. 无线打印服务器怎么安装,【DDwifi打印服务器】Windows 7系统添加打印机步骤(离线安装打印机驱动)...
  4. 抖音小店另类起店方法
  5. 微信小程序 vant-weapp 实现多选标签
  6. 浅谈互联网行业发展趋势及现状
  7. 微信小程序自定义showModel为转发按钮
  8. 思科服务器网关配置文件,思科服务器网关配置文件
  9. WHQL徽标认证申请流程
  10. Linux bc命令