最近在做一个SCFDE波形的C和矢量实现,指导老师给了几份Matlab仿真代码,要我把对应的C语言和矢量写出来(并行运算指令操作),简单的代码一下就写完了,有些写的还是有点烦躁,特别是卷积编码的解码,今天我们先不谈解码,先谈下编码,这个还是写的比较流畅的。
卷积编码器,听着就不好理解,没事,我来分析一波,首先我们来分析下(3,1,2)编码器,这三个数啥意思啊,3代表有三个输出,1代表一个输入,而约束度为N=2+1=3;这是啥意思呢,简单的来说就是一个输入进去,有三个输出,而约束度是为了在纠错时用的,也就是其能够监督3个信息段(每次一个比特输入的话,也就是能监督9个比特);下面我们来分析其实际应用:
在matlab我们适用卷积编码函数时,是不是得调用一个网格函数?就是这个trel = poly2trellis(ConstraintLength,CodeGenerator);
简单的来说,ConstraintLength是有几个移位寄存,CodeGenerator是代表有几路输出以及输出与移位寄存器的关系,
设trel = poly2trellis(7,[171,133]);这里代表有7个寄存器,两路输出,171和133是啥啊,在这里171和133是八进制,要转换为二进制才能知道他们的关系:[1111001,1011011];这是不是很清楚了(如图1),它们是异或运算,也就是,第一个输出是1、2、3、4、7寄存器的值的异或。
第一个输出与1、2、3、4、7这几个寄存器有关系,那么trel = poly2trellis(7,[171,133]),convenc_out = convenc(x(n),trel)是不是就代表(2,1,6)编码器呢?那么(3,1,2)编码器同理,这不过这样说明,没有指定输出与寄存器的关系,下面看一段我实现的代码(如图2、图3):
下面验证一下结果(如图4):
如果有什么问题我们还可以再讨论一下。
相关文章
- Matlab的卷积编码实现
- 详解基于MATLAB的车牌识别系统设计与实现:字符分割
- 基于Matlab的视频人体动作识别,Matlab实现
- 常用约束最优化方法: 内点罚函数法的原理及其matlab实现
- 基于HSV色度空间的图像深度信息提取算法FPGA实现,包含testbench和MATLAB辅助验证程序
- 线性判别分析(LDA)的MATLAB和Python实现
- 在Matlab中实现图像的几何变换 - 張晓
- matlab 常用机器学习算法的实现
- [Matlab] 线性卷积&圆周卷积代码实现
- 机器学习技法实现(一):AdaBoost- Decision Stump (AdaBoost - 决策树的基于Matlab的实现)