⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldpc_encode.m

📁 LDPC编码的GFQ程序源代码
💻 M
字号:
function [out] = ldpc_encode(in,G,q)
% function [out] = ldpc_encode(in,H,q)
% encodes data from "in" using G over GFq
% q = 2,4,8,16,32,64,128 or 256
% Please, make sure that the data you use is valid!
% Requires matlab communication toolbox for GFq operations.
% Basically, this function performs 'in*G' over GFq. 
% this function is slow, will write a C version some time

%   Copyright (c) 1999 by Igor Kozintsev igor@ifp.uiuc.edu
%   $Revision: 1.0 $  $Date: 1999/11/23 $

[k,n] = size(G); 
if q==2 % binary case
   out = mod((in')*G,2);
else
   M=log2(q); % GFq exponent
   [tuple power] = gftuple([-1:2^M-2]', M, 2); 
   alpha = tuple * 2.^[0 : M - 1]';
   beta(alpha + 1) = 0 : 2^M - 1;
   ll = ones(1,n)*(-Inf);      % will store results here, initialize with all zeros (exp form)
   for i=1:k % multiply each row of G by the input symbol in GFq
      ii = power(beta(in(i)+1)+1); % get expon. representation of in(i)
      jj = power(beta(G(i,:)+1)+1);% same for the row of G
      kk = gfmul(ii,jj,tuple); % this is exponential representation of the product
      ll = gfadd(ll,kk,tuple);
   end
   
   out=zeros(size(ll));
   nzindx = find(isfinite(ll));
   out(nzindx) = alpha(ll(nzindx)+2);
   out = out(:);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -