欢迎来到天天文库
浏览记录
ID:20400742
大小:59.50 KB
页数:6页
时间:2018-10-13
《准对称dmc信道容量c++实现,程序说明书》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、准对称DMC信道容量的C++实现程序说明书山东**大学***科学与技术学院**工程0704一、程序功能概述本程序使用C++程序语言编写,实现已知准对称DMC信道的转移矩阵求信道容量。已知:求:准对称DMC的信道容量bit/符号二、程序结构概述本程序共分三部分:主函数、类外函数、类。各部分功能:主函数:负责程序的启动,接收用户数据,创建对象,函数调用。类外函数:负责程序的初始化,接收用户输入的数据。类:完成数据计算,输出计算结果。三、程序功能分析1.主函数创建一个二维数组y[][],用来存放转移矩阵。采用数组的传址方式调用函数:input(
2、),以实现对数组的初始化。创建dmc类对象,并以转移矩阵的元素个数和数组地址作为实参。依次调用dmc类的各成员函数,完成数值计算。均不返回计算结果,由成员函数直接输出到屏幕。1.类外函数用于接收用户输入的input函数:用for循环完成对主函数y[][]数组的赋值,因为采用传址方式,可以直接完成对主函数数组的修改,无须返回值。用于初始化屏幕的Start函数。2.类:dmc类内的成员函数有:构造函数dmc(),析构函数~dmc(),对矩阵进行列排序的函数paixu();条件熵计算函数H();子阵列计算分块、计算函数HDMC()。(1)dmc
3、():用主函数传递的参数对类的数据成员进行初始化,用数组atob[][]代表集合P(Y
4、X)。提取矩阵的第一行用Y[]存放。for(intr1=0;r15、for(intr6=r5+1;r6=a_b[r5][n5]){xx=a_b[r5][n5];a_b[r5][n5]=a_b[r6][n5];a_b[r6][n5]=xx;}}}}(1)H():实现公式的计算。voiddmc::H(){for(intn2=0;n26、2]=0;M[y2]=0。用某一列元素对比矩阵其他列元素,对比前将这一列标号设为1,计数器设为1,当其他列与该列完全相同时计数器增一,并将相同的该列标号置1。进行下一列元素的对比,对比前先检测该列标号是否为0,若不为0,则认为该列与之前扫描过的列相同,已经计入列计数器,不再进行对比。计数器存放的数值即为公式中的Sk。for(inty1=0;y17、3][y1]!=a_b[r3][n3]){break;}elseif(r3==r-1){one[n3]=1;M[y1]++;}}}}}计算Mk:for(intn5=0;n58、C++程序语言实现了准对称DMC的信道容量的计算。可以满足替代人工计算的要求,提高了工作效率和计算精度。采用类封装和模块化设计可以实现程序功能的扩展和代码的重用。**于2010年5月1日起草
5、for(intr6=r5+1;r6=a_b[r5][n5]){xx=a_b[r5][n5];a_b[r5][n5]=a_b[r6][n5];a_b[r6][n5]=xx;}}}}(1)H():实现公式的计算。voiddmc::H(){for(intn2=0;n26、2]=0;M[y2]=0。用某一列元素对比矩阵其他列元素,对比前将这一列标号设为1,计数器设为1,当其他列与该列完全相同时计数器增一,并将相同的该列标号置1。进行下一列元素的对比,对比前先检测该列标号是否为0,若不为0,则认为该列与之前扫描过的列相同,已经计入列计数器,不再进行对比。计数器存放的数值即为公式中的Sk。for(inty1=0;y17、3][y1]!=a_b[r3][n3]){break;}elseif(r3==r-1){one[n3]=1;M[y1]++;}}}}}计算Mk:for(intn5=0;n58、C++程序语言实现了准对称DMC的信道容量的计算。可以满足替代人工计算的要求,提高了工作效率和计算精度。采用类封装和模块化设计可以实现程序功能的扩展和代码的重用。**于2010年5月1日起草
6、2]=0;M[y2]=0。用某一列元素对比矩阵其他列元素,对比前将这一列标号设为1,计数器设为1,当其他列与该列完全相同时计数器增一,并将相同的该列标号置1。进行下一列元素的对比,对比前先检测该列标号是否为0,若不为0,则认为该列与之前扫描过的列相同,已经计入列计数器,不再进行对比。计数器存放的数值即为公式中的Sk。for(inty1=0;y17、3][y1]!=a_b[r3][n3]){break;}elseif(r3==r-1){one[n3]=1;M[y1]++;}}}}}计算Mk:for(intn5=0;n58、C++程序语言实现了准对称DMC的信道容量的计算。可以满足替代人工计算的要求,提高了工作效率和计算精度。采用类封装和模块化设计可以实现程序功能的扩展和代码的重用。**于2010年5月1日起草
7、3][y1]!=a_b[r3][n3]){break;}elseif(r3==r-1){one[n3]=1;M[y1]++;}}}}}计算Mk:for(intn5=0;n58、C++程序语言实现了准对称DMC的信道容量的计算。可以满足替代人工计算的要求,提高了工作效率和计算精度。采用类封装和模块化设计可以实现程序功能的扩展和代码的重用。**于2010年5月1日起草
8、C++程序语言实现了准对称DMC的信道容量的计算。可以满足替代人工计算的要求,提高了工作效率和计算精度。采用类封装和模块化设计可以实现程序功能的扩展和代码的重用。**于2010年5月1日起草
此文档下载收益归作者所有