实验一--信道容量的迭代算法上课讲义.pdfVIP

  • 30
  • 0
  • 约6.83千字
  • 约 7页
  • 2020-07-24 发布于天津
  • 举报

实验一--信道容量的迭代算法上课讲义.pdf

实 验 一 - - 信 道 容 量 的 迭 代 算 法 精品文档 信息工程 12 班 吴玉明 实验一 信道容量的迭代算法 一、 实验目的 1、掌握信道容量的概念。 2、了解迭代法计算信道容量的流程。 3、熟悉 Matlab 程序的设计和调试方法。 二、 实验要求 1、学习 Matlab 软件编程和调试方法; 2、输入:任意一个信道转移概率矩阵。包括信源符号个数、信宿符号个 数、信道转移概率,在程序运行时从键盘输入; 3、输出:输入的信道矩阵、信道容量 C。 三 实验算法程序 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)

1亿VIP精品文档

相关文档