contmax.m

来自「信道容量的迭代算法 用matlab实现」· M 代码 · 共 57 行

M
57
字号
function [P_X,C,N]=contmax(P_YX,e)%    计算任意信道的信道容量C及最佳输入分布P_X%    P_X -------输入概率分布%    C----------信道容量%    N----------迭代次数%    P_YX-----DMC信道的转移矩阵%    e-----------精度if length(find(P_YX<0)~=0)    error('Not a probable vector.Negtive component');endif abs(sum(P_YX')-1)>10e-10    error('Not a probable vector,Component do not add up to "1" ');end% 变量初始化    C1=1;C=0;N=0;    r=size(P_YX);P_X=ones(1,r(1))/r(1);% 调整P_YX的零元素值        Pyx=(P_YX==0).*eps;P_YX=P_YX+Pyx;% 迭代求解while (abs(C1-C))>e    P_Y=P_X*P_YX;          I1=sum((P_YX.*log2(P_YX))');    I2=log2(P_Y)*(P_YX'); BETA=exp(I1-I2);    B=P_X*(BETA');    C1=log(B);C=log(max(BETA));    P_X=P_X.*BETA/B;    N=N+1;end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?