labview-信道编码-李聪-11211060
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《信道编码》实验报告
姓名李聪罗贵阳学号******** ********指导教师姚冬萍
时间2014年5月14日
目录
一、线性分组码原理简介 (2)
1、编码 (2)
2、译码 (2)
二、(7,4)码Labview实现 (3)
一、读取图片产生数据流 (3)
二、汉明码编码 (4)
主要模块: (4)
三、BPSK调制 (4)
四、加性高斯白噪声信道传输 (5)
五、PSK解调 (5)
六、解码 (6)
七、重构图像 (7)
三、实验中遇到的问题 (8)
四、实验心得 (9)
五、参考文献: (10)
基于Labview 的(7,4)线性分组码仿真
一、线性分组码原理简介
1、编码
令(7,4)分组码的生成矩阵为矩阵G 如下:
根据生成矩阵,输出码字可按下式计算:
所以有:
信息位 冗余位
由以上关系可以得到(7,4)汉明码的全部码字如表1所示。
2、译码
(7,4)汉明码的译码将输入的7位汉明码翻译成4位的信息码,并且纠正其中可能出现
1000110010001100101110001101G ⎡⎤⎢⎥
⎢
⎥=⎢⎥⎢⎥⎣⎦
3210321010001100100011(,,,)(,,,)00101110001101b a a a a G a a a a ⎡⎤⎢⎥
⎢
⎥=•=•⎢⎥⎢⎥⎣⎦231013210210
b a a a b a a a b a a a =⊕⊕=⊕⊕=⊕⊕63524130
b a b a b a b a ====
的一个错误。
由于生成矩阵G 已知且G = [I k Q ] ,可以得到矩阵Q 的值
110011111101T Q P ⎡⎤⎢⎥
⎢
⎥==⎢⎥⎢⎥⎣⎦
又因为T
P Q =则:
101111100111P ⎡⎤
⎢⎥=⎢⎥
⎢⎥⎣⎦
而校验矩阵H 满足 H =[P I r ] ,则:
101110011100100111001H ⎡⎤
⎢⎥=⎢⎥
⎢⎥⎣⎦
由校正子S = BH T =(A + E )H T = EH T 可以看出校正子S 与错误图样E 是一一对
应的。通过计算校正子得到对应的错误图样,根据式子A =B + E 便可得到纠正了一位可能错误的信息位,完成解码。
二、(7,4)码Labview 实现
一、读取图片产生数据流
LabVIEW 提供了一个能够读取JPEG 格式的图像并输出图像数据的模块。提供的还原像素图.vi 完成图像数据到一维二进制数据的转换(图像数据→十进制二维数组→二进制一维数组),输出信源比特流。
二、汉明码编码
我们知道编码是拿输入的数据流构建信息矩阵然后和生成矩阵相乘得到的。在这里,我们编码是(7,4)汉明码,先将输入的一维数据流每4个排在一起生成一个二维矩阵,采用的方法是首先测量一维数组里面含有的元素个数,然后除以4,得到行数,将一维数组流重排为二维数组,然后和生成矩阵相乘得到码字矩阵,然后将二维码字矩阵重排为一维数据流输出。
主要模块:
:主要用于测量输入数组的大小,在这里我们是来测量一维数据流元素个数。
:除法算子。
:矩阵乘法算子,信息矩阵和生成矩阵相乘
:数组重排算子,一维数组重排为二维数组;输入是一维数组,两个参数分别是二维数组维数。
三、BPSK调制
首先单极性码转化为双极性码,然后用双极性码调制信号
四、加性高斯白噪声信道传输
根据给定的信噪比(dB),信号功率和编码速率,计算高斯白噪声的功率,生成和信号数组相同长度的高斯白噪声数组,叠加到信号上,模拟信号经过加性高斯白噪声信道的情况。在本模块中需要设定信噪比。
五、PSK解调
解调是测量接收到的信号虚部,对虚部作一个过零比较判决,如果虚部大于0,则信号判为0,小于0,则判为1
六、解码
实现思路:首先将输入的一维码字数据流重排成n×7的二维数组,然后让这个二维数组和校验矩阵的转置相乘得到n×3伴随矩阵,每代表每个码字的伴随式矢量,利用伴随式矢量可以得到码字哪一位错误。具体判断实现方法是,首先得到伴随式矩阵的行数,也就是码字个数,这个行数是用来确定循环次数,在每一次循环内,将伴随式矩阵的每一行分离出来,然后用伴随式矢量的每一行和校验矩阵的每一列进行匹配,和哪一列匹配则证明哪一位出现了错误,然后再对该数据位取反,对收到的码字进行纠正,除去冗余位即可得到数据位,还原原来图像的数据流。
算子分析:
:主要用于测量输入数组的大小,在这里我们是来测量一维数据流元素个数。
:除法算子。
:矩阵乘法算子,信息矩阵和生成矩阵相乘
:数组重排算子,一维数组重排为二维数组;输入是一维数组,两个参数分别是二维数组维数。
:测量数组大小,输入的是一个二维数组,返回的是这个数组的行数和列数。
这个模块主要是用来控制循环次数,在每次循环内将每一行取出来,并且根据右边的公式转化为十进制,然后和校验矩阵每一列匹配,相同,则该列错误。
判决模块,判断哪一列出现了错误
数组重排,二维数组变一维数组
七、重构图像
将上步得到的信息流转换成二维的JPEG数组,使用“绘制还原像素图.vi”重建图片。
三、实验现象以及分析