matlab生成m元n次擴展信源

在信息論與編碼的時候,我們經常使用二元n次擴展信源,做一些實驗的時候,需要快速生成一個n次擴展信源,下面我們利用matlab來實現n次擴展信源的生成:
首先我們來生成它的編碼,這裏按照自然順序生成每一行,沒有按照格雷編碼。

code=zeros(2^n,n);
p=zeros(n,1);
for i=0:2^n-1
    c=dec2bin(i,n);
    for j=1:n
        code(i+1,j)=str2num(c(j));
    end
end

接着我們計算每行編碼的概率:

    pp=1;
    c=code(i+1,:);
    for k=1:n
        if c(k)==0
            pp=pp*P(1);
        else
            pp=pp*P(2);
        end
    end
    p(i+1)=pp;

彙總的matlab代碼如下:

function [code,p]=n_kuo(P,n)
%二元信源的n次擴展信源產生器
code=zeros(2^n,n);
p=zeros(n,1);
for i=0:2^n-1
    c=dec2bin(i,n);
    for j=1:n
        code(i+1,j)=str2num(c(j));
    end
    pp=1;
    c=code(i+1,:);
    for k=1:n
        if c(k)==0
            pp=pp*P(1);
        else
            pp=pp*P(2);
        end
    end
    p(i+1)=pp;
end
end

我們以0-0.7 1-0.3的信源概率,4次擴展爲例,結果如下:
編碼和概率
接着,我們也做了m元信源做n次擴展的結果,代碼見資源:
m元信源做n次擴展的matlab實現.rar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章