回覆列表
  • 1 # 使用者3916807372217

    %親自驗證,絕對可用!

    % Matlab實現離散通道容量的迭代演算法% 功能:利用迭代演算法計算離散通道的容量

    %引數解釋

    %C:通道容量

    %P:轉移機率矩陣

    %B:中間變數矩陣

    %e: 通道容限,一般選0.00001

    %X:輸入機率分佈

    %n:迭代次數

    function channel_cap(P, e)

    n=0;

    C=0;

    C_0=0;

    C_1=0;

    [r,s]=size(P);

    for i=1:r

    if(sum(P(i,:))~=1)%檢測機率轉移矩陣是否行和為1.

    error("機率轉移矩陣輸入有誤!!")

    return;

    end

    for j=1:s

    if(P(i,j)1)%檢測機率轉移矩陣是否負值或大於1

    error("機率轉移矩陣輸入有誤!!")

    return;

    end

    end

    end

    X=ones(1,r)/r;

    A=zeros(1,r);

    B=zeros(r,s);

    while(1)

    n=n+1;

    for i=1:r

    for j=1:s

    B(i,j)=log(P(i,j)/(X*P(:,j))+eps);

    end

    A(1,i)=exp(P(i,:)*B(i,:)");

    end

    C_0=log2(X*A");

    C_1=log2(max(A));

    if (abs(C_0-C_1)

  • 中秋節和大豐收的關聯?
  • 七彩獎開什麼獎?