matlab 中插入附录,附录 Matlab源程序.doc

附录 Matlab源程序

附录 Matlab源程序

附录A 信息熵

% 函数说明: %

% H=entropy(P,r) 为信息熵函数 %

% P为信源的概率矢量, r为进制数 %

% H为信息熵 %

%****************************** %

function H=entropy(P,r)

if (length(find(P<=0))~=0)

error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件

end

if (abs(sum(P)-1)>10e-10)

error('Not a prob.vector,component do not add up to 1');

end

H=(sum(-P.*log2(P)))/(log2(r)+eps);

附录B 离散无记忆信道容量的迭代计算

% 信道容量C的迭代算法 %

% 函数说明: %

% [CC,Paa]=ChannelCap(P,k) 为信道容量函数 %

% 变量说明: %

% P:输入的正向转移概率矩阵,k:迭代计算精度 %

% CC:最佳信道容量,Paa:最佳输入概率矩阵 %

% Pa:初始输入概率矩阵,Pba:正向转移概率矩阵 %

% Pb:输出概率矩阵,Pab:反向转移概率矩阵 %

% C:初始信道容量, r:输入符号数,s:输出符号数 %

%**************************************************%

function [CC,Paa]=ChannelCap(P,k)

% 提示错误信息

if (length(find(P<0)) ~=0)

error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件

end

if (abs(sum(P')-1)>10e-10)

error('Not a prob.vector,component do not add up to 1') % 判断是否符合概率和为1

end

% 1)初始化Pa

[r,s]=size(P);

Pa=(1/(r+eps))*ones(1,r);

sumrow=zeros(1,r);

Pba=P;

% 2)进行迭代计算

n=0;

C=0;

CC=1;

while abs(CC-C)>=k

n=n+1;

% (1)先求Pb

Pb=zeros(1,s);

for j=1:s

for i=1:r

Pb(j)=Pb(j)+Pa(i)*Pba(i,j);

end

end

% (2)再求Pab

suma=zeros(1,s);

for j=1:s

for i=1:r

Pab(j,i)=Pa(i)*Pba(i,j)/(Pb(j)+eps);

suma(j)=suma(j)+Pa(i)*Pba(i,j)*log2((Pab(j,i)+eps)/(Pa(i)+eps));

end

% 3)求信道容量C

C=sum(suma);

% 4)求下一次Pa,即Paa

L=zeros(1,r);

sumaa=0;

for i=1:r

for j=1:s

L(i)=L(i)+Pba(i,j)*log(Pab(j,i)+eps);

end

a(i)=exp( L(i));

end

sumaa=sum(a);

for i=1:r

Paa(i)=a(i)/(sumaa+eps);

end

% 5)求下一次C,即CC

CC=log2(sumaa);

Pa=Paa;

end

% 打印输出结果

s0='很好!输入正确,迭代结果如下:';

s1='最佳输入概率分布Pa:';

s2='信道容量C:';

s3='迭代次数n:';

s4='输入符号数r:';

s5='输出符号数s:';

s6='迭代计算精度k:';

for i=1:r

B{i}=i;

end

disp(s0);

disp(s1),disp(B),disp(Paa);

disp(s4),disp(r);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值