汉明码卷积码实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天津理工大学实验报告学院(系)名称:计算机与通信工程学院
}
hmcoding.Checking();
hmcoding.Decoding();
}
else if(choice=='Z'||choice=='z')
{ if(!flag) { cout<<"\t\t\t操作错误!请执行输入建立操作后再进行本操作!"< hmcoding.GOTO_HMCding_Z(); } else if(choice=='Q'||choice=='q')//退出 { exit(0); } else//如果选了选项之外的就让用户重新选择 { cout<<"\t\t\t没有输入正确的步骤,请重新输入!"< goto C; } cout< } } 运行结果: 卷积码程序编写: #include #include using namespace std; class JuanjiCode{ private: int i,j,t; int n0,k0,r0,m; int **h,**H,**g,**G; //实现编码所需变量 int code; string Info_str,Code_str; int total_num,extra_num; public: void Initializing(); void Trans_h_to_H(); void Trans_h_to_g(); void Print_g(); void Trans_g_to_G(); void Print_G(); //编码 void Before_Encoding();//编码前的准备 int Check(string); void Encoding(); }; /**********************初始化模块**********************/ void JuanjiCode::Initializing() { cout<<"请输入码字长n0="; cin>>n0; cout<<"请输入信息元个数k0="; cin>>k0; cout<<"请输入关联长度m="; } J_Code.Initializing(); J_Code.Trans_h_to_H(); J_Code.Trans_h_to_g(); J_Code.Trans_g_to_G(); } else if(choice=='2') { if(!flag) { cout<<"操作错误!请执行初始化操作后再进行本操作!"< } //编码 J_Code.Encoding(); } else if(choice=='3') { exit(0);//退出 } else//如果选了选项之外的就让用户重新选择 { cout<<"您没有输入正确的步骤,请重新输入!"< } cout< } } 运行结果: 心得体会: 这次的实验是实现汉明码的编码与译码,达到纠错功能以及卷积码的编码。通过信息论的课程,我基本了解了汉明码编译和卷积码编码的原理和方法,但在编程的过程中遇到了不少的困难。首先还是理解汉明码概念的问题,因为还存在纠错的功能,汉明码的编码方式比以前学的哈夫曼编码或山农诺编码要复杂很多,开始的时候理解起来有些困难。不过通过仔细看书,很快就弄懂了汉明码的原理。但是最开始编出来的程序运行的结果总是不正确,经过调试,程序很快就能够正确运行了。这次的信息论与编码实验让我,把课堂上的知识和理论付诸实践才能有所提高。在编程的过程中,我发现自己的编程能力还非常有待提高,以前C语言课程里的很多知识掌握还不牢,时常需要翻书查阅。对信息论与编码这门课的学习还要加深。 .. . . . 学习.资料.