实验报告-3-信道容量.docVIP

  • 368
  • 0
  • 约2.76千字
  • 约 8页
  • 2021-06-28 发布于广东
  • 举报
PAGE 《信息与编码》课内实验报告 学生姓名: 及 学 号: 学 院: 理学院 班 级: 课程名称: 信息与编码 实验题目: 离散信道容量 指导教师 姓名及职称: 常志文 副教授 朱振菊 讲师 刘力 实验师 201 目 录 TOC \o 1-1 \h \z \u 一、实验目的 1 二、实验内容 1 三、实验要点及说明 1 四、实现方法 1 五、实验结果 2 六、源程序清单 4 七、思考及总结 6 - PAGE 6 - 一、实验目的 1.掌握离散信道的信道容量的计算方法; 2.理解不同类型信道的不同特点与不同的计算方法; 二、实验内容 1.进一步熟悉一般离散信道的信道容量计算方法; 2.进一步复习巩信道性质与实际应用; 3.学习如何将复杂的公式转化为程序。 三、实验要点及说明 准确理解信道容量计算公式意义及如何计算,并能通过matlab编程计算相应信道容量; 要编写一个通用的程序,计算不同类型的信道的容量,进一步分析影响信道容量的因素。 四、实现方法 以matlab软件为基础,以通过编程, 1)计算对称信道的信道容量。 2)计算非对称信道的信道容量。 3)分析影响信道容量的因素。 五、实验结果 1、计算非对称信道的信道容量。 2、计算对称信道的信道容量。 3、影响信道容量的因素。 此处,我们的程序只实现了方阵信道信道容量的计算,但是实际上非方阵的也能容易计算。容易发现,影响信道容量因素有:信源和信宿的个数,以及各个信道的概率,虽然说,这个过程中会有信息量的损失,但是这个我们在计算信道容量的时候也是计算在内的,所以不算是一个影响因素。 六、源程序清单 %信道容量C计算的Matlab程序 clc;clear all; N = input(输入信源符号X的个数N=); M = input(输出信源符号Y的个数M=); p_yx=zeros(N,M); %程序设计需要信道矩阵初始化为零 fprintf(输入信道矩阵概率\n) for i=1:N for j=1:M p_yx(i,j)=input(p_yx=);%输入信道矩阵概率 if p_yx(i)0 error(不符合概率分布) end end end for i=1:N %各行概率累加求和 s(i)=0; for j=1:M s(i)=s(i)+p_yx(i,j); end end for i=1:N %判断是否符合概率分布 if (s(i)=0.999999||s(i)=1.000001) error(不符合概率分布) end end b=input(输入迭代精度:);%输入迭代精度 for i=1:N p(i)=1.0/N; %取初始概率为均匀分布 end for j=1:M %计算q(j) q(j)=0; for i=1:N q(j)=q(j)+p(i)*p_yx(i,j); end end for i=1:N %计算a(i) d(i)=0; for j=1:M if(p_yx(i,j)==0) d(i)=d(i)+0; else d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j)); end end a(i)=exp(d(i)); end u=0; for i=1:N %计算u u=u+p(i)*a(i); end IL=log2(u); %计算IL IU=log2(max(a));%计算IU n=1; while((IU-IL)=b) %迭代计算 for i=1:N p(i)=p(i)*a(i)/u; %重新赋值p(i) end for j=1:M %计算q(j) q(j)=0; for i=1:N q(j)=q(j)+p(i)*p_yx(i,j); end end for i=1:N %计算a(i) d(i)=0; for j=1:M if(p_yx(i,j)==0) d(i)=d(i)+0; else d(i)=d

文档评论(0)

1亿VIP精品文档

相关文档