function gus_h=gus2(hmatrix)
%分三步进行:1、先检查第(1,1)的元素是否为1?不是1,则与下面首元素是1的行对调;
% 2、从第二行开始,再次检测首元素是否为1?为1,则与第一行相减(由于是
% 稀疏矩阵只有0,1元素,所以用mod运算就可以完成);
% 3、再检测第(2,2)个元素是否为1,照以上两点循环到会h_row.
%Define variables:
% h ------ hmatrix的行数,列数数组;
% hmatrix ------ 稀疏矩阵;
% h_row ------ hmatrix的行数;
% h_col ------ hmatrix的列数;
% ii,jj ------ 循环的次数;
% temp ------ 暂存的数组;
%初始化过程
h=size(hmatrix);
h_row=h(1);
h_col=h(2);
temp=zeros(1,h_col);
%进行第一步
for ii=1:h_row
if hmatrix(ii,ii)~=1
for jj=ii+1:h_row
if hmatrix(jj,ii)==1
temp=hmatrix(jj,:);
hmatrix(jj,:)=hmatrix(ii,:);
hmatrix(ii,:)=temp;
break;
end
end
end
%进行第二步
jj=ii+1;
if jj<=h_row %判断是否到最后一行
for jj=ii+1:h_row
if hmatrix(jj,ii)==1
hmatrix(jj,:)=xor(hmatrix(jj,:),hmatrix(ii,:));
end
end
else
hmatrix(h_row,:)=0;
end
end
gus_h=hmatrix;