【粗解】【通信编码】卷积编码器的简单实现

这篇博客介绍了如何使用C++实现卷积编码器,适合初学者。作者阐述了实现思路,即通过矩阵计算来处理卷积,并指出通过改变单位脉冲响应可以改变编码类型。文章重点解析了部分源码,包括头文件、主函数和关键的Encoder类成员函数。
摘要由CSDN通过智能技术生成

卷积编码器的简单实现

前言

一周前,通信编码老师布置下一个任务——用C/C++实现卷积编码器,于是乎经过一个星期断断续续的思考和码字,也是成功的在linux下实现了。下面我将一些思路及关键点进行阐述和讲解,望各位看客获益。
在开始讲解前,先申明几点:

  • 如有通信编码课老师刚好是系主任刚好姓丁刚好也布置了这个作业的同学,别慌!自己人!
  • 本程序难度不大,适合C++青铜段的同学们
  • 本文只贴出了部分代码,仅提供思路,“…”处为省略
  • 小弟学识浅薄,纰漏之处敬请指正

思路

由于卷积的计算可以转化为矩阵的计算,因此卷积编码计算的思路大致为:

  1. 选定单位脉冲响应(设为gxy,代表第x个输入的第y个输出的单位脉冲响应)
  2. 根据输入序列长度(设为seqLen)构建出矩阵(设为gMat)
  3. 输入序列(设为seq)与gMat做矩阵乘法得到输出序列

可以看到,不同的卷积编码仅区别于gxy与序列长度。既然序列长度是根据每次输入所改变的,那么只要改变gxy便可以改变卷积编码的类型。因此,我们将gxy及相关参数保存为文件,想要实现不同的卷积编码仅需载入不同的文件即可

部分源码解析


  • 首先是头文件

convCode.h
#pragma once

#include <iostream>
#include <string>
#include <string.h>
#include <fstream>
#include <ctype.h>
#include <errno.h>

#define MAXLINE 64
#define OUTMAX 36

using namespace std;

class Encoder {
  //Encoder类,代表编码器

public://图方便将所有成员设为公共,更加严谨的方法是仅留几个函数接口为公共

    int
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值