📄 lt_encode.m
字号:
% [X,n,g] = LT_encode(k,ml,A)
% [X,n,g] = LT_encode(k,ml,A,X,n,g)
function [X,n,g,c_deg,v_deg,c_node,v_node] = LT_encode(k,ml,A,rate,varargin)
nbIn = nargin;
if nbIn ~= 4 && nbIn ~= 7
fprintf('参数个数不匹配,%d\n',nbIn);
end;
c=floor(k*rate);
delta=0.05;
if nbIn == 4
n=floor(k*rate);
[d,mul] = RobustSoliton(k,c,delta,n);
%d = IdealSoliton(k,n);
%d = YangSoliton(k,n);
for j=1:n
% 对长度为k的input symbols产生m个[1..k]之间的Ideal Soliton度分布
%d = IdealSoliton(k,1);
% 在[1..k]之间以度d(d个‘1')为先条件的均匀分布
r=uniformInt(0,k,d(j));
x=zeros(1,k);
x(r)=1;
g(:,j)=x';
end;
%y=sort(sum(g)); %一定要产生一个degree==1的 output symbol
%if y(1) > 1
% d=1;
% r=uniformInt(0,k,d);
% x=zeros(1,k);
% x(r)=1;
% n=n+1;
% g(:,n)=x';
%end;
% 保证所有input symbol被覆盖(covered)
%rw = sort(sum(g'));
%while rw(1)==0
% d = RobustSoliton(k,c,delta,1);
%d = RobustSoliton(k,c,delta,1);
% r=uniformInt(0,k,d);
% x=zeros(1,k);
% x(r)=1;
% n=n+1;
% g(:,n)=x';
% rw = sort(sum(g'));
%end;
[c_deg,v_deg,c_node,v_node]=updateGraphic(k,n,g);
for i=1:n % 根据XOR关系矩阵g进行编码
x=zeros(1,ml);
for j=1:v_deg(i)
c = v_node(i,j);
x = mod(x+A(c,:),2);
end;
X(i,:)=x;
end;
elseif nbIn == 7
X=varargin{1};
n=varargin{2};
g=varargin{3};
[d,mul] = RobustSoliton(k,c,delta,3);
%d = IdealSoliton(k,3);
%d = YangSoliton(k,3);
for i=1:3
r=uniformInt(0,k,d(i));
x=zeros(1,k);
x(r)=1;
n=n+1;
g(:,n)=x';
end;
[c_deg,v_deg,c_node,v_node]=updateGraphic(k,n,g);
for i=1:n % 根据XOR关系矩阵g进行编码
x=zeros(1,ml);
for j=1:v_deg(i)
c = v_node(i,j);
x = mod(x+A(c,:),2);
end;
X(i,:)=x;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -