其他分享
首页 > 其他分享> > 基于LabVIEW的信号编码与解码----(7,4)线性分组码

基于LabVIEW的信号编码与解码----(7,4)线性分组码

作者:互联网

2.1 分组码理论知识

2.1.1 线性分组码

将信源的信息序列分成独立的块进行处理和编码,称为分组码。

编码时将k长度信息分为一组通过预定的线性运算变换成长度为n(n>k)的码字,每个不同的信息有唯一不同的码字。由2k个信息码组所编成的2k个码字集合,称为线性分组码。

而(7,4)分组码能完成1位错误时的纠错,而且实现稍简单,故选择(7,4)分组码作为我们编码的编码方式。

2.1.2 分组编码原理

(7,4)线性分组码的编码:首先,把信息序列均按4长度分成若干信息码组;然后,按照预定的线性规则(生成矩阵),把信息码组变换成长度为7的码字,前4个为信息码元 a6a5a4a3,后3个监督码元 a2a1a0 是由线性运算产生的。

监督码元可由信息码元按以下的公式计算,下图所示:

按照编码规则,可得到(7,4)分组码所有码字组合,具体如下所示:

将生成监督码元的公式(1)(2)(3)作数学上的变换得到以下方程组:

由上面的方程组可得监督矩阵(校验矩阵)H 如下所示,由3个线性独立方程组的系数组成。观察可知监督位和信息位的关系已确定。

由上面方程组的式(4)、式(5)、式(6)经变换得到:

则式(8)、式(9)、式(10)可用矩阵表示为式(11):

设 监督矩阵H = \begin{bmatrix} PI_3\end{bmatrix} ,则P = \begin{bmatrix} 1110\\1101\\1011 \end{bmatrix} ,利用矩阵的特性,则有以下式(12):

据分组码编码原理,7位码字由4位信息码元经过线性运算得到,可以知道有式(13):

结合式(7)式(12)式(13)可以求得生成矩阵G

当确定了生成矩阵,则编码方法也确定了,也即编码的线性运算关系也确定了。具体为由4位信息码元构成的每组与生成矩阵G相乘后,得到7位的码字,附加的3位为运算生成的监督码元。最后可求得7位码字的具体运算为

2.1.3 分组译码原理

(7,4)线性分组码的译码可以纠正其中可能出现的1个错误。利用线性运算获得校正子校验纠错后,获取长为7的码组中前4位信息码组即可。

设编码后的发送的7位码组为A=[a_6a_5a_4a_3a_2a_1a_0],由于传输过程中可能有误码,接收到的7位码组为B=[b_6b_5b_4b_3b_2b_1b_0],则收发码组之差为错误图样E=B-A

通过分析错误图样 E 即可知接收码组 B 与发送码组 A 是否一致,若e_i=0,则b_i=a_i,若e_i≠0,则b_i≠a_i 。

又由编码部分的式(7)已7知校验矩阵P = \begin{bmatrix} 1110100\\1101010\\1011001 \end{bmatrix},则可直接通过公式计算校正子S:

通过搜索可得(7,4)码校正子与错误图样 E 的对应关系如下:

通过计算校正子的结果,根据上表获得对应的错误图样E,可以确定是否有错码及1位错码时的位置,根据式子A=(B+E)\%2便可得到纠正了1位可能错误的接收码组,至此完成译码部分。

举个例子,设接收码组B=[0000011],通过S=[s_2s_1s_0]=B*H^T计算,得到S=[011],查看错误图样E可知出错位为b3,且E=[0001000],实行 A=(B+E)\%2,即可获得纠正1位错误后的接收码组 [0001011]。再截取前4位码元,即为信息码组。

2.2 分组码LabVIEW实现

完成一个LabVIEW程序,使其对选择的JPG图像文件完成(7,4)分组码的编解码。(此部分除了编解码部分均为正确的,只需补充编解码部分的程序)总的程序框图如下:

2.2.1 图像读取

图像读取程序框图如下所示:

此图像读取模块首先通过子vi读取电脑中JPG格式的图像,然后将该图像还原成24位像素图数据输出,然后再把该图像数据进行一维二进制数据的转换(即图像数据→十进制二维数组→二进制一维数组),最后输出信源比特流。

2.2.2 信道编码

分组码信道编码前面板如下所示:

分组码信道编码程序框图如下所示:

由编码原理可知,(7,4)分组码编码需要将输入的数据比特每4位一组和生成矩阵G相乘得到7位一组的码字。此处输入数据的比特流为一维,所以先把输入的一维数据流(n)每4个排在一行重排成一个二维矩阵(n/4x4)。然后与生成矩阵相乘得到二维码字矩阵(n/4x7),最后将二维码字矩阵重排为一维数据流输出。

补充说明:

生成矩阵G通过前面板设置,与前面理论部分中的一致;

数组大小:返回数组每个维度中元素的个数。此处,返回图像数据的比特数,便于分组

商与余数:计算输入的整数商和余数。

重排数组维数:根据输入改变数组的维数和大小

2.2.3 BPSK调制

BPSK调制程序框图如下所示:

BPSK调制即二进制相移键控调制。即对信道编码后的数据进行处理,使其变为适合于信道传输的形式。具体处理为将0和1转换成1和-1来传输,即将单极性码转化为双极性码,然后用双极性码调制信号。

2.2.4 加高斯白噪声

高斯白噪声模拟信道程序框图如下所示:

根据给定的信噪比(dB),信号功率和编码速率,计算高斯白噪声的功率,生成和信号数组相同长度的高斯白噪声数组,叠加到信号上,模拟信号经过加性高斯白噪声信道(AWGN)的情况。在本模块中需要设定信噪比。

高斯白噪声:功率谱密度服从均匀分布,幅度分布服从高斯分布。在任意两个不同时刻上的随机变量之间,不仅是互不相关的,而且还是统计独立的

2.2.5 BPSK解调

BPSK解调程序框图如下所示:

解调是调制的逆过程,就是根据调制规则相应恢复出原编码数据的过程。此处,通过测量接收到的信号数据的实部,对实部作一个过零比较判决,如果实部大于0,则信号判为0,若实部小于0,则判为1,刚好恢复未调制前的编码数据。

2.2.6 信道解码

分组码信道编码程序框图如下所示:

根据(7,4)分组码译码原理,首先需要把输入数据一维比特流1x(n/4x7)通过重排数组维数转换成二维的(n/4)x(7)编码流,然后与校验矩阵相乘,获得校正子二维数组(n/4)x(3),为了实现校验纠错,将n/4组校验子数据都送入循环,获得相应的n/4组的差错图样,然后执行纠错,再对纠错后的接收码流进行去冗余,最后再转换为一维数据比特流。

循环模块共进行n/4循环次数,每次输入校正子,然后通过转换校正子为10进制,来判断该次码流是否出现错误,通过创建数组来输出每次求出的相应的差错图样来和接收到的数据进行异或,实现相应位置的1个错误纠正。其中的判决模块,判断哪一列出错。当s=[000]时,m=0时,a=b=c=d=e=f=g=0,没有出错,a,b,c,d,e,f,g代表E矩阵的列位。当s=[111],即m=7时,通过判决模块,可知道对应b列有误,即a=c=d=e=f=g=0,b=1,此时输出的差错图样E=[0100000]。

循环隧道,即把数据传入传出循环结构,且数据的类型和值前后不变,传出循环是传循环的最后一个数据;

索引隧道在传入循环外的数组时,会在循环内会自动依顺序每次循环取出数组的1个元素。索引隧道传出数据时,自动把循环内的数据组织成数组,最后输出的是一个数组的形式。

去冗余位的数组子集,对于纠错后(n/4)x7的二维数组只保留每行的前四列形成(n/4)x4的信息码组;

2.2.7 重构图像

重构图像程序框图如下所示:

结合前面编解码后的输出数据比特流和24位像素图的码流大小(数组),转换成二维的24位像素图信息,然后将该像素图转换成JPEG图像,最后输出该图片。

2.2.8 误码率计算

误码率计算模块程序框图如下所示:

通过该模块的程序框图,可以明显看到误码率的计算时通过对比编解码后的输出数据流和原图片的比特流。

2.3 分组码结果分析

无信道编码运行图如下所示:

启动分组编码运行图如下所示:

结果分析:

通过分别对无信道编码和启动信道编码进行多次不同信噪比情况下的测试,发现信噪比极大地影响误码率,信噪比越大,处理后的图片越清晰,误码率越小。对于提供的图片,无信道编码在信噪比大于等于17时,无信道编码在信噪比大于等于14时,误码率都接近于0。

在固定信噪比为10的情况下,分析图2.12无信道编码处理图,可以看到,经过了模拟信道的传输后,此时处理后的图片出现了很多随机分布彩色的小点,说明信息在高斯白噪声信道中进行传输后出现了误码,得到的图像还原后有失真;当启动信道编码后,分析图2.13启动信道编码处理图,彩色小点明显减少,误码率从约0.005减小到约0.0003,说明了采用(7,4)分组码对JPG图片编解码的处理,是可以对一些传输出错的信息码组进行纠正,能在很大程度上降低误码率,提高传输的可靠性。

标签:分组码,编码,码组,矩阵,----,LabVIEW,数组,信道编码
来源: https://blog.csdn.net/m0_46140457/article/details/123617943