基于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)分组码的监督码元计算公式

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

(7,4)分组码所有码字组合

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

式456

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

式7

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

式8910

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

式11

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

式12

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

式13

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

求生成矩阵G图

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

求7位码字图

2.1.3 分组译码原理

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

设编码后的发送的7位码组为 A = [ a 6 a 5 a 4 a 3 a 2 a 1 a 0 ] A=[a_6a_5a_4a_3a_2a_1a_0] A=[a6a5a4a3a2a1a0],由于传输过程中可能有误码,接收到的7位码组为 B = [ b 6 b 5 b 4 b 3 b 2 b 1 b 0 ] B=[b_6b_5b_4b_3b_2b_1b_0] B=[b6b5b4b3b2b1b0],则收发码组之差为错误图样 E = B − A E=B-A E=BA

错误图样图

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

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

计算校正子公式图

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

74码校正子与错误图样的对应图

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

举个例子,设接收码组 B = [ 0000011 ] B=[0000011] B=[0000011],通过 S = [ s 2 s 1 s 0 ] = B ∗ H T S=[s_2s_1s_0]=B*H^T S=[s2s1s0]=BHT计算,得到 S = [ 011 ] S=[011] S=[011],查看错误图样E可知出错位为b3,且 E = [ 0001000 ] E=[0001000] E=[0001000],实行 A = ( B + E ) % 2 A=(B+E)\%2 A=(B+E)%2,即可获得纠正1位错误后的接收码组 [ 0001011 ] [0001011] [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解调程序框图如下所示:

 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图片编解码的处理,是可以对一些传输出错的信息码组进行纠正,能在很大程度上降低误码率,提高传输的可靠性。

如果对你有所帮助,请点个赞。
转载请注明出处,欢迎交流。

感谢帮助我的kui、ying、ma等多位同学

  • 33
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
基于LabVIEW信号处理系统,双通道频谱测量滤波器的设计如下。 首先,我们需要明确设计的目标和需求。双通道频谱测量滤波器的目的是对输入信号的频谱进行测量和滤波处理,以提取所需频率范围内的信号,并将其输出到相应的通道中。 设计步骤如下: 1.输入信号采集:使用LabVIEW中的信号采集模块,通过外部传感器或示波器输入信号,并将信号采集到系统中。 2.频域转换:使用LabVIEW中的FFT(快速傅里叶变换)模块,将时域信号转换为频域信号,以便进行频谱测量和滤波处理。 3.频谱测量:对频域信号进行测量和分析,使用LabVIEW的功率谱密度模块,可以计算信号在不同频率上的功率分布情况。可以根据需要选择不同的频谱测量方法,如平均功率谱密度。 4.滤波处理:根据设计需求,在频域上对信号进行滤波处理。可以使用LabVIEW的滤波器模块,选择合适的滤波器类型和参数,如低通、高通、带通或带阻滤波器。通过对频域信号进行滤波处理,可以提取所需频率范围内的信号,并将其输出到相应的通道中。 5.结果显示与输出:将滤波后的信号输出到相应通道,并在LabVIEW界面上显示滤波后的频谱图像和相关参数。可以使用LabVIEW的图形和数据显示模块,实现结果的可视化和分析。 通过以上设计步骤,可以实现基于LabVIEW的双通道频谱测量滤波器的设计。该系统可以广泛应用于信号处理领域,例如音频处理、图像处理、通信系统等,提供了一种方便、高效的信号处理解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羊and船

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值