个人网站建设与管理工作总结,平顶山河南网站建设,陕西西安建设厅官方网站,wordpress账号无法创建原理
有时间再补充。
注1#xff1a;使用高斯消去法。如果Py不为单位阵#xff0c;则说明进行了列置换#xff0c;此时G不是系统形式。
注2#xff1a;校验矩阵H必须是行满秩才存在对应的生成矩阵G#xff0c;且生成矩阵G通常不唯一。
matlab实现#xff1a;只做列置…原理
有时间再补充。
注1使用高斯消去法。如果Py不为单位阵则说明进行了列置换此时G不是系统形式。
注2校验矩阵H必须是行满秩才存在对应的生成矩阵G且生成矩阵G通常不唯一。
matlab实现只做列置换不做行置换
function [G, Px, Py] Gaussian_Elimination_in_GFq(H, q)% initial[m, n] size(H);H_stair mod(H,q);Px eye(m); Py eye(n);for i1:mfor ji:nif gcd(H_stair(i,j), q) 1break;elseif jnerror(Gaussian_Elimination_in_GFq: The H is not full rank in GF(%d).,q);elsecontinue;endendendif j ~ iH_stair(:, [i, j]) H_stair(:, [j, i]);Py(:, [i, j]) Py(:, [j, i]);endendfor i1:m[~, x, ~] gcd(H_stair(i,i), q);inv_i mod(x, q);H_stair(i, :) mod(inv_i * H_stair(i, :), q);Px(i, :) mod(inv_i * Px(i, :), q);for j1:mif j~i H_stair(j,i)~0factorH_stair(j, i);H_stair(j, :) mod(H_stair(j, :) - factor * H_stair(i, :), q);Px(j, :) mod(Px(j, :) - factor * Px(i, :), q);endendendparity_matrix mod((q-1).*H_stair(:,m1:n),q);G_fixed[parity_matrix,eye(n-m)];GG_fixed*Py;
end
matlab实现先做行置换若无逆元再做列置换
function [G, Px, Py] Gaussian_Elimination_in_GFq(H, q)[m, n] size(H);H_stair mod(H,q);Px eye(m); Py eye(n);%% column findfor j1:mfor ij:mif gcd(H_stair(i,j), q) 1break;elseif im%% row findfor kj1:nif gcd(H_stair(j,k), q) 1break;elseif knerror(Gaussian_Elimination_in_GFq: The H is not full rank in GF(%d).,q);elsecontinue;endendend%% column exchangeH_stair(:,[j,k]) H_stair(:,[k,j]);Py(:,[j,k]) Py(:,[k,j]);ij;break;elsecontinue;endendend%% row exchangeif i ~ jH_stair([j, i],:) H_stair([i, j],:);Px([j, i],:) Px([i, j],:);endendfor i1:m[~, x, ~] gcd(H_stair(i,i), q);inv_i mod(x, q);H_stair(i, :) mod(inv_i * H_stair(i, :), q);Px(i, :) mod(inv_i * Px(i, :), q);for j1:mif j~i H_stair(j,i)~0factorH_stair(j, i);H_stair(j, :) mod(H_stair(j, :) - factor * H_stair(i, :), q);Px(j, :) mod(Px(j, :) - factor * Px(i, :), q);endendendparity_matrix mod((q-1).*H_stair(:,m1:n),q);G_fixed[parity_matrix,eye(n-m)];GG_fixed*Py;end