資源簡介
有完整的主程序和子程序,每個程序有詳細的代碼注釋,可以仿真出來802.16e標準不同碼長的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?=?p0/p1
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?-----rji?for?j
???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?------qji?for?i
???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
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-31?19:59??LDPC_802.16e仿真代碼\
?????文件????????2604??2016-04-27?14:24??LDPC_802.16e仿真代碼\decodeLogDomain.m
?????文件????????2039??2016-06-17?16:26??LDPC_802.16e仿真代碼\decodeLogDomainSimple.m
?????文件????????2465??2016-06-16?20:21??LDPC_802.16e仿真代碼\decodeProbDomain.m
?????文件????????1877??2016-06-07?21:53??LDPC_802.16e仿真代碼\FPGA_data_test.m
?????文件????????1846??2016-06-24?15:27??LDPC_802.16e仿真代碼\fpga_test.m
?????文件?????????533??2016-06-12?15:12??LDPC_802.16e仿真代碼\huizong.m
?????文件????????2160??2016-06-17?15:27??LDPC_802.16e仿真代碼\IEEE_encode.m
?????文件????????3133??2016-06-17?15:16??LDPC_802.16e仿真代碼\IEEE_ldpc.m
?????文件????????2099??2016-03-23?16:26??LDPC_802.16e仿真代碼\ldpc_decode.m
?????文件????????2084??2016-06-12?08:18??LDPC_802.16e仿真代碼\Ldpc_Prob.m
?????文件????????2077??2016-06-16?21:03??LDPC_802.16e仿真代碼\LDPC_Sum_Product.m
?????文件????????1460??2016-05-13?08:23??LDPC_802.16e仿真代碼\lianghua.m
?????文件?????????391??2016-06-17?15:26??LDPC_802.16e仿真代碼\matrix_permutation_sparse.m
?????文件????????1739??2016-05-23?13:38??LDPC_802.16e仿真代碼\minmum.m
?????文件????????1561??2016-04-28?15:27??LDPC_802.16e仿真代碼\m_xulie.m
- 上一篇:CppUnit CookBook 中文版
- 下一篇:SVM多分類代碼
評論
共有 條評論