信道容量实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南大学

信息科学与工程学院

实验报告

实验名称信道容量的迭代算法课程名称信息论与编码

1.实验目的

(1)进一步熟悉信道容量的迭代算法;

(2)学习如何将复杂的公式转化为程序;

(3)掌握C 语言数值计算程序的设计和调试技术。

2、实验方法

硬件:pc 机

开发平台:visual c++软件

编程语言:c 语言

3、实验要求

(1)已知:信源符号个数r 、信宿符号个数s 、信道转移概率矩阵P 。

(2)输入:任意的一个信道转移概率矩阵。信源符号个数、信宿符号个数和每

个具体的转移概率在运行时从键盘输入。

(3)输出:最佳信源分布P*,信道容量C 。

4.算法分析

1:procedure CHANNEL CAPACITY(r,s,(ji p ))

2:initialize:信源分布i p =1/r ,相对误差门限σ,C=—∞

3:repeat

4:

5:

6: C 2211log [exp(log )]

r s ji ij r j p φ==∑∑

7:until C C σ∆≤

8:output P*= ()i r p ,C

9:end procedure

21211exp(log )exp(log )s

ji ij j r s ji ij r j p p φφ===∑∑∑i p 1i ji r i ji i p p p p =∑ij

φ

5.程序调试

1、头文件引入出错

f:\visualc++\channel\cpp1.cpp(4) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

————#include

纠错://#include

f:\visualc++\channel\cpp1.cpp(5) : fatal error C1083: Cannot open include file: 'values.h': No such file or directory

————#include

纠错://#include

2、变量赋值错误

f:\visualc++\channel\cpp1.cpp(17) : error C2065: 'ij' : undeclared identifier

f:\visualc++\channel\cpp1.cpp(17) : error C2440: 'initializing' : cannot convert from 'int' to 'float ** ' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

————float **phi_ij=ij=NULL;

纠错:float **phi_ij=NULL;

3、常量定义错误

f:\visualc++\channel\cpp1.cpp(40) : error C2143: syntax error : missing ';' before 'for' ————for(i=0;i

phi_ij[i]=(float *)calloc(s,sizeof(float));

f:\visualc++\channel\cpp1.cpp(52) : error C2021: expected exponent value, not ' '

————if(fabs(validate -1.0)>DELTA)

f:\visualc++\channel\Cpp1.cpp(84) : error C2021: expected exponent value, not ' '

————if(fabs(p_j)>=DELTA)

f:\visualc++\channel\Cpp1.cpp(100) : error C2021: expected exponent value, not ' '

————if(fabs(phi_ij[i][j])>=DELTA)

f:\visualc++\channel\Cpp1.cpp(116) : error C2021: expected exponent value, not ' ' ————while(fabs(C-C_pre)/C>DELTA);

纠错:#define DELTA 0.000001;

F:\visualc++\channel\Cpp1.cpp(68) : error C2065: 'MAXFLOAT' : undeclared identifier

F:\visualc++\channel\Cpp1.cpp(68) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data

————C=-MAXFLOAT;

纠错:#define MAXFLOAT 1000000;

3、引用中文逗号

f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xa1'

f:\visualc++\channel\cpp1.cpp(60) : error C2018: unknown character '0xb1'

f:\visualc++\channel\cpp1.cpp(60) : error C2065: 'Starting' : undeclared identifier

f:\visualc++\channel\cpp1.cpp(60) : error C2059: syntax error : '.'

相关文档
最新文档