一般信道容量
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
哈尔滨理工大学荣成学院
信息论与编码实验报告
——一般信道容量编码
班级:电信13-2班
姓名:
学号:
日期:2015.10.24
一般信道的信道容量
一、实验目的
1、熟悉MATLAB的使用
2、掌握一般信道的信道容量的求解
3、学习用MATLAB编写一般信道的信道容量的求解程序
二、实验内容
用MATLAB编写一般信道的信道容量的程序,并求出信道容量,最佳信源分布。
三、实验程序
Matlab程序代码段:
clear all
format rat %所有的数全部用分数显示
A=ones(4)*2^-40; %定义一个极小值矩阵
P=[1/2,1/4,0,1/4;0,1,0,0;0,0,1,0;1/4,0,1/4,1/2]; %信道的传递矩阵
B=A+P; %用极小值矩阵加上矩阵B避免出现log2(0)的情况
for i=1:4
for j=1:4
D(i,j)=B(i,j)*log2(B(i,j));
end
end
F=sum(D,2); %每行求和Σ
X=P\F; %计算公式中的β值记为X
C=log2(2^X(1,1)+2^X(2,1)+2^X(3,1)+2^X(4,1)) %信道容量
%以下代码段是求信道容量的最佳输入分布PA
Pb1=2^(X(1,1)-C); %Pb1,Pb2,Pb3,Pb4是求输出概率分布
Pb2=2^(X(2,1)-C);
Pb3=2^(X(3,1)-C);
Pb4=2^(X(4,1)-C);
PB=[Pb1;Pb2;Pb3;Pb4]; %输出概率矩阵
PA=inv(P')*PB%因为PB=PT(P的转置)*PA,所以PA=PT^(-1)(P转置矩阵的逆矩
阵)*PB clear all
format rat%ËùÓеÄÊýÈ«²¿Ó÷ÖÊýÏÔʾ
s=input('please input a array');
A=ones(4)*2^-40; %¶¨ÒåÒ»¸ö¼«Ð¡Öµ¾ØÕó
B=A+s; %Óü«Ð¡Öµ¾ØÕó¼ÓÉϾØÕóB±ÜÃâ³öÏÖlog2£¨0£©µÄÇé¿ö
for i=1:4
for j=1:4
D(i,j)=B(i,j)*log2(B(i,j));
end
end
F=sum(D,2); %ÿÐÐÇóºÍ¦²
X=s\F; %¼ÆË㹫ʽÖеĦÂÖµ¼ÇΪX
C=log2(2^X(1,1)+2^X(2,1)+2^X(3,1)+2^X(4,1)) %ÐŵÀÈÝÁ¿
%ÒÔÏ´úÂë¶ÎÊÇÇóÐŵÀÈÝÁ¿µÄ×î¼ÑÊäÈë·Ö²¼PA
Pb1=2^(X(1,1)-C); %Pb1,Pb2,Pb3,Pb4ÊÇÇóÊä³ö¸ÅÂÊ·Ö²¼
Pb2=2^(X(2,1)-C);
Pb3=2^(X(3,1)-C);
Pb4=2^(X(4,1)-C);
PB=[Pb1;Pb2;Pb3;Pb4]; %Êä³ö¸ÅÂʾØÕó
PA=inv(s')*PB %ÒòΪPB=PT(PµÄתÖÃ)*PA£¬ËùÒÔPA=PT^(-1)(PתÖþØÕóµÄÄæ¾ØÕó)*PB
四、实验结果
五、出现的问题及解决方法:
(1)信道的传递矩阵P中有0,在取对数的时候无法计算log2(0),经过向同学请教得到
两种解决办法:
[1]计算时将P中的所有0改为1,这样在计算对数是则为log2(1)=0,不影响计算结果,但是出现另一个问题是计算的F=sum(D,2)每行求和得到的F矩阵中的元素有0,那么在计算公式中的β值即X=P\F时,由于F处在分母的位置不能为0,则在编译的时候出现错误,因此放弃此方案。
[2]计算时给P中的所有数加上一个极小的数,使其计算的过程中不影响计算值,那么在后面求解β值即X=P\F时就不会出现上述问题。
(2)matlab的使用不熟练,在将计算公式向程序代码转换的时候思路不清晰,线性代数中矩阵的转置及矩阵的逆的运算掌握不到位,以至于在公式推导是遇到瓶颈,耽误了许多时间,没有按时完成本次试验。