資源簡介
LDPC碼的PEG算法Matlab code
代碼片段和文件信息
clear?all;
clc;
%輸入編碼參數m:校驗節點數目,n:變量節點數目(注意碼率R不一定為1/2)
%構造任意碼率的LDPC校驗矩陣
m=input(‘The?number?of?check?nodes:‘);
n=input(‘The?number?of?variable?nodes:‘);
h=zeros(mn);
%給定變量節點度分布序列?dv=0.38354*x+0.04237*x^2+0.57409*x^3
%為了得到更好的性能,此處的度分布序列采用密度進化理論選取
dv=inline(‘0.38354*x+0.04237*x.^2+0.57409*x.^3‘‘x‘);
%計算每個度分布的節點數
indv=quadl(dv01);
a2=round(n*(0.38354/2/indv));
a3=round(n*(0.04273/3/indv));
ds(1:a2)=2;
ds(a2+1:a3+a2)=3;
ds(a2+a3+1:n)=4;
%這里不考慮校驗節點的度分布序列,構造新Tanner圖時,均為0
dc=zeros(1m);
%下面展開PEG算法,將每一個變量節點展成l層子圖,構造Tanner圖
for?j=1:n????????????%對于每一個變量節點循環
????for?k=1:ds(j)????%對于度分布循環,控制邊的數目
????????if?k==1
????????????%若為第一條邊,直接尋找最小度分布的校驗節點
????????????k1=find(dc==min(dc));
????????????h(k1(1)j)=1;
????????????dc(k1(1))=dc(k1(1))+1;
????????else?%若不是第一條邊,則展成l層子圖,尋找在l層最小度分布的校驗節點
????????????flag=1;
????????????l=1;
????????????%這里對每一個校驗節點是否存在于第l層做標記最大展開層數待定
????????????dcf=zeros(1000m);
????????????row=find(h(:j));???%列搜索,搜索為1的行標
????????????dcf(lrow)=1;???????%展開第一層
????????????while(flag)
????????????????l=l+1;
????????????????h_row=h(row:);
????????????????if??length(row)==1
????????????????????col=find(h_row);
????????????????else
???????????????????
- 上一篇:基于matlab的圖像增強—空域變換增強一
- 下一篇:MATLAB實現馬赫帶
評論
共有 條評論