資源簡介
MATLAB實現LDPC編碼,針對不同碼率及碼長,分析對比各情況下的吞吐量的變化,經調試,可運行

代碼片段和文件信息
function?vHat?=?decodeLogDomain(rx?H?N0?iteration)
%?Log-domain?sum?product?algorithm?LDPC?decoder
%
%??rx????????:?Received?signal?vector?(column?vector)
%??H?????????:?LDPC?matrix
%??N0????????:?Noise?variance
%??iteration?:?Number?of?iteration
%
%??vHat??????:?Decoded?vector?(0/1)?
%
%
%?Copyright?Bagawan?S.?Nugroho?2007?
%?http://bsnugroho.googlepages.com
[M?N]?=?size(H);
%?Prior?log-likelihood.?Minus?sign?is?used?for?0/1?to?-1/1?mapping
Lci?=?(-4*rx./N0)‘;
%?Initialization
Lrji?=?zeros(M?N);
Pibetaij?=?zeros(M?N);
%?Asscociate?the?L(ci)?matrix?with?non-zero?elements?of?H
Lqij?=?H.*repmat(Lci?M?1);
?
%?Get?non-zero?elements
[r?c]?=?find(H);
%?Iteration
for?n?=?1:iteration
???
???fprintf(‘Iteration?:?%d\n‘?n);
???
???%?Get?the?sign?and?magnitude?of?L(qij)???
???alphaij?=?sign(Lqij);???
???betaij?=?abs(Lqij);
???for?l?=?1:length(r)
??????Pibetaij(r(l)?c(l))?=?log((exp(betaij(r(l)?c(l)))?+?1)/...
?????????????????????????????(exp(betaij(r(l)?c(l)))?-?1));
???end
???
???%?-----?Horizontal?step?-----
???for?i?=?1:M
??????
??????%?Find?non-zeros?in?the?column
??????c1?=?find(H(i?:));
??????
??????%?Get?the?summation?of?Pi(betaij))????????
??????for?k?=?1:length(c1)
?????????sumOfPibetaij?=?0;
?????????prodOfalphaij?=?1;
?????????
?????????%?Summation?of?Pi(betaij)\c1(k)
?????????sumOfPibetaij?=?sum(Pibetaij(i?c1))?-?Pibetaij(i?c1(k));
?????????
?????????%?Avoid?division?by?zero/very?small?number?get?Pi(sum(Pi(betaij)))
?????????if?sumOfPibetaij?1e-20
????????????sumOfPibetaij?=?1e-10;
?????????end?????????
?????????PiSumOfPibetaij?=?log((exp(sumOfPibetaij)?+?1)/(exp(sumOfPibetaij)?-?1));
??????
?????????%?Multiplication?of?alphaij\c1(k)?(use?‘*‘?since?alphaij?are?-1/1s)
?????????prodOfalphaij?=?prod(alphaij(i?c1))*alphaij(i?c1(k));
?????????
?????????%?Update?L(rji)
?????????Lrji(i?c1(k))?=?prodOfalphaij*PiSumOfPibetaij;
?????????
??????end?%?for?k
??????
???end?%?for?i
???%?------?Vertical?step?------
???for?j?=?1:N
??????%?Find?non-zero?in?the?row
??????r1?=?find(H(:?j));
??????
??????for?k?=?1:length(r1)????????
????????
?????????%?Update?L(qij)?by?summation?of?L(rij)\r1(k)
?????????Lqij(r1(k)?j)?=?Lci(j)?+?sum(Lrji(r1?j))?-?Lrji(r1(k)?j);
??????
??????end?%?for?k
??????
??????%?Get?L(Qi)
??????LQi?=?Lci(j)?+?sum(Lrji(r1?j));
??????
??????%?Decode?L(Qi)
??????if?LQi?0
?????????vHat(j)?=?1;
??????else
?????????vHat(j)?=?0;
??????end
???????????????????????
???end?%?for?j
???
end?%?for?n
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2568??2007-05-04?15:09??01吞吐量—不同碼長-可變碼率LDPC\decodeLogDomain.m
?????文件???????2096??2008-12-10?10:15??01吞吐量—不同碼長-可變碼率LDPC\decodeLogDomainSimple.m
?????文件???????6550??2008-07-23?10:08??01吞吐量—不同碼長-可變碼率LDPC\genP.m
?????文件???????5724??2008-12-10?10:20??01吞吐量—不同碼長-可變碼率LDPC\ldpcBER.m
?????文件???????3426??2008-12-10?10:14??01吞吐量—不同碼長-可變碼率LDPC\makeLdpc.m
?????文件???????3849??2008-11-18?10:23??01吞吐量—不同碼長-可變碼率LDPC\makeParityChk.m
?????目錄??????????0??2013-05-17?20:32??01吞吐量—不同碼長-可變碼率LDPC
-----------?---------??----------?-----??----
????????????????24213????????????????????7
評論
共有 條評論