RS编码的16QAM调制高斯信道性能

     利用 Matlab 的产生随机数据,经过 RS 编码和或 16QAM 数 字调制,送入高斯
白噪声信道;在接收端使用 16QAM 解调数据和信道 解码后,与信源数据进行误码率统
计;分析误码率与信噪比的关系。

     在通信系统中,出现传输信号的失真或错误信息的情况是不可避免的。为了提高通
信系统的可靠性,可以使用纠错码来减少误码率。RS 码是一种基于有限域(Galois Field)
的纠错码,RS 编码的方法是将信息码块按照一定的算法进行处理,得到一组校验码块,
并将校验码块附加在信息码块之后形成编码块。对于一个(n,k)的 RS 码,其中 n 表示
数据包含的总比特数,k 表示原始数据包的比特数,校验码块的数量为 n-k。这里设计
RS(7,3),输入 10000 个二进制比特流,根据 RS(7,3),一个码字中的有用信息位位有 9 个
比特,9 个比特一分帧,对不满一帧的用零补满一帧,共有 1112 个帧,即 1112 个数据块,
对每一帧取 3 的比特一组,从二进制转化到十进制数在接收端。对 RS 码的译码操作采取
的是 Berlekamp-Massey 算法,该算法可以通过线性反馈移位寄存器找到 RS 码的纠错多
项式,进而进行纠错操作。如果解码得到的信息块出现错误,那么译码器会使用计算出
来的纠错项进行纠错,并计算出正确的信息块。最后通过比较经过 RS 编码与未经过 RS
编码的误码率随信噪比变化曲线证实了,由于 RS 码可以纠正多个错误,所以在误码率较
低的情况下,RS 码可以有效提高通信系统的可靠性。  

     通过 MATLAB 设计一个 RS(7,3)编码,首先输入 10000 个二进制比特流,对其进行
9 个二进制比特一分帧,依次对每一帧进行 RS 编码。然后对编码后的二进制比特流进行
16-QAM 调制,对其进行串并转化,进行 2/4 电平转化,进入相乘器后叠加。接着将调制
后的数据通过高斯白噪声信道,对调制后的波形分别与相乘器相乘,进入低通形成保罗
波形,进入采样判决器,选取采样点形成原始的二进制波形,最后进入并串转换,按照
原先的奇偶原则形成原始的二进制比特流。然后,对解调后的二进制比特流进行 21 个一
分帧,对一帧计算校正算子检测是否出错,通过 Berlekamp-Massey 算法,找到错误位置
并纠错。最后,绘出随着信噪比变化的误码率曲线。

   设计 RS(7,3),输入 10000 个二进制比特流,根据 RS(7,3),一个码字中的有用信息位
位有 9 个比特,9 个比特一分帧,对不满一帧的用零补满一帧,共有 1112 个帧,即 1112
个数据块,对每一帧取 3 的比特一组,从二进制转化到十进制数,有 3 个有用信息位的
十进制数,占三个字节,添加 4 个冗余字节,编码后的数据块是 7 字节。通过对数据块
进行多项式除法,计算生成多项式的余数,并将余数附加到原始数据块的末尾,形成编
码后的数据块,具体操作如图 1。

     图 1 显示了(7,3)RS 纠删码的编码过程,左边是生成矩阵 G,上半部分是单位矩
阵,下半部分是 4×3 的系统柯西矩阵,纠错能力为 2。中间是数据向量 D。右边是码字C,上半部分是数据元素,下半部分是校验元素。其编码过程可表达为 G×D=C,其编码过程可表达为G×D=C,其中的参数 D=(d0,
d1,d2)T ,C=(d0,d1,d2,c0,c1,c2,c3)T。将编码后的 7 字节从十进制转化成二进制,
每个字节有 3 个二进制比特。原始数据经过编码后由原来的 10000 个,变成了 23352 个
二进制比特数据。然后对编码后的二进制比特流进行 16-QAM 调制,对其进行串并转化,
进行 2/4 电平转化,进入相乘器后叠加。接着将调制后的数据通过高斯白噪声信道,对
调制后的波形分别与相乘器相乘,进入低通形成保罗波形,进入采样判决器,选取采样
点形成原始的二进制波形,最后进入并串转换,按照原先的奇偶原则形成原始的二进制
比特流。对经过调制的 23352 个比特数据进行分帧,一个码字有 21 个二进制比特,一共分了
1112 帧,即 1112 个数据块,对每一帧取 3 个比特为一字节,从二进制转化到十进制数。
然后由接受的一个数据块计算校正算子,经历 4 次循环,依次计算伴随式中的值如果伴
随式为 0,则接收到的码字就所传码字,若伴随式不是 0,则接收到的码字不是所传码字,
从而检测出存在错误。根据

ai 是由 RS(7,3)确定的 GF(23)的本源多项式对应的幂级数。
如果计算得到的伴随式中某些值不为零,这表明数据中存在错误。通过求解牛顿恒等式
的方程组,可以确定错误发生的位置和错误的值。这个步骤依赖于 Berlekamp-Massey 迭
代算法,找到满足牛顿恒等式的最终方程,其根就是错误位置的倒数,即若 a1 根,则 a6
就是错误位置。牛顿恒等式如下:

一旦确定了错误的位置和值,就可以通过将接收到的数据中的相应位进行修正来纠
正这些错误。例如,如果计算得到 s0=α2,可以求得错误位置αx=α5 和错误值 mx=α2,
这意味着数据中的某个位置出现了错误,其错误值为α2。通过将该位置的数值更新为正

确的值,可以实现错误的纠正。

调制:

解调

部分程序:

源代码私信

项目纯手打,不是免费的哦~小小一杯奶茶的💴
希望可以帮到你哈!

项目纯手打,不是免费的哦~小小一杯奶茶的💴
希望可以帮到你哈!

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值