信息论与编码实验报告-信道容量的迭代算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称:信息论与编码姓名:
系:
专业:
年级:
学号:
指导教师:
职称:
年月日
实验四信道容量的迭代算法
一、 实验目的
1、进一步熟悉信道容量的迭代算法;
2、学习如何将复杂的公式转化为程序;
3、熟悉程序设计语言的数值计算程序和调试技术。
二、实验原理
(1)初始化信源分布()r 21)0(,,,P P P P =(一般初始化为均匀分布),置迭代计数器k=0,设信道容量相对误差门限为δ,δ>0,可设; (2) s i P P P P i k i ij k i ij k ji ,,2,1)
()()(
==∑ϕ (3) r i P P P i j k ji ij j k ji ij k i ,2,1ln exp ln exp )()()1(=⎪⎭
⎪⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡=∑∑∑+ϕϕ (4) ⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡=∑∑+i k ji j ij k P C )()
1(ln exp ln ϕ (5)如果δ≤-++)1()
()1(k k k C C C ,转向(7);
(6)置迭代序号k k →+1,转向(2);
(7)输出)1(+k i P 和)1(+k C 的结果;
(8)停止。
三、实验内容
1、已知:信源符号个数r 、新宿符号个数s 、信道转移概率矩阵P ;
2、输入:任意的一个信道转移概率矩阵,信源符号个数、信宿符号个数和每一个具体的转移概率在运行时从键盘输入;
3、 输出:最佳信源分布P*,信道容量C 。
四、实验环境
Microsoft Windows 7、
Matlab
五、编码程序
文件:
clear;
r=input('输入信源个数:');
s=input('输入信宿个数:');
deta=input('输入信道容量的精度: ');
Q=rand(r,s); %创建m*n随机分布矩阵
A=sum(Q,2);
B=repmat(A,1,s);
disp('信源转移概率矩阵:'),p=Q./B %信源转移概率矩阵i=1:1:r;
q(i)=1/r;
disp('原始信源分布:'),q
c=-10e-8;
C=repmat(q',1,s);
for k=1:1:100000
m=p.*C; %后验概率的分子部分
a=sum(m); %后验概率的分母部分
su1=repmat(a,r,1);
t=m./su1; %后验概率矩阵
D=exp(sum(p.*log(t),2)); %信源分布的分子部分
su2=sum(D); %信源分布的分母部分
q=D/su2; %信源分布
C=repmat(q,1,s);
c(k+1)=log(sum(exp(sum(p.*log(t),2))))/log(2);
kk=abs(c(k+1)-c(k))/c(k+1);
if(kk<=
break;
end
end
disp('最大信道容量时的信源分布:q='),disp(q')
disp('最大信道容量:c='),disp(c(k+1))
六、实验结果结果
1)检验:运行
输入信源的个数:2
输入信宿的个数:3
输入信道容量的精度:
信宿转移概率矩阵:p =
原始信源分布:q =
最佳信源分布:q=
最大信道容量:c=
2)计算信源个数为3,信宿个数为5的信道容量:
运行
输入信源的个数:3
输入信宿的个数:5
输入信道容量的精度:
信宿转移概率矩阵:p =
原始信源分布:q =
最佳信源分布:q =
最大信道容量:c =
七、实验总结
通过实验,我们对信道容量的理解更加深刻了。信道容量是指信道能无错误传送的最大信息率。信道的输入、输出都取值于离散符号集,且都用一个随机变量来表示的信道就是离散单符号信道。由于信道中存在干扰,因此输入符号在传输中将会产生错误,这种信道干扰对传输的影响可用传递概率来描述。为了评价实际信道的利用率,应具体计算已给信道的容量。这是一个求最大值的问题。由于互信息对输入符号概率而言是凸函数,其极值将为最大值,因此这也就是求极值的问题。对于离散信道,P(x)是一组数,满足非负性和归一性等条件,可用拉格朗日乘子法求得条件极值。对于连续信道,P(x)是一函数,须用变分法求条件极值。
实验过程中,我们虽然也遇到了很多困难,但也正是因为如此,我们才能发现自己基础的薄弱点,学的更有方向。对于编程方面,我们也有了很大的提升。