二元域矩阵求逆MATLAB代码

function[out]=inv_bin(in)%INV_BINSummaryofthisfunctiongoeshere%Detailedexplanationgoeshere%计算二进制稀疏矩阵的逆[m,n]=size(in);if(m~=n)fprintf(‘m~=n\n’);return;endE=eye…

大家好,又见面了,我是你们的朋友全栈君。

function [ out ] = inv_bin( in )
%INV_BIN Summary of this function goes here
%   Detailed explanation goes here
%   计算二进制稀疏矩阵的逆
[m,n] = size(in);
if(m~=n)
   fprintf('m~=n\n');
   return ;
end
E = eye(m);
%%
%做行变换,变成下三角阵
for i = 1:m
    noneZerosIndex = find(in(:,i));  %i到end行,第i列非零元
    noneZerosIndex = noneZerosIndex(find(noneZerosIndex>=i));
    if(length(noneZerosIndex)==0)  %该行为0
        randIndex = randi([i+1,m],1);
        %列交换
        temp = in(:,i);
        in(:,i) = in(:,randIndex);
        in(:,randIndex) = temp;
        %E交换
        temp = E(:,i);
        E(:,i) = E(:,randIndex);
        E(:,randIndex) = temp;
    end
    id1 = noneZerosIndex(1);
    %in交换
    temp = in(i,:);
    in(i,:) = in(id1,:);
    in(id1,:) = temp;
    %E交换
    temp = E(i,:);
    E(i,:) = E(id1,:);
    E(id1,:) = temp;
    
    noneZerosIndex = find(in(:,i));  %第i列非零元,用其中的第一行消其他行
    for cc = 1:length(noneZerosIndex)
        if(noneZerosIndex(cc)~=i)  %跳过第i行
            temp = mod(in(noneZerosIndex(cc),:)+in(i,:) , 2);
            in(noneZerosIndex(cc),:) = temp;
            temp = mod(E(noneZerosIndex(cc),:)+E(i,:) , 2);
            E(noneZerosIndex(cc),:) = temp;
        end
    end
end
out = E;
end

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129146.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入JAVA注解(Annotation):自定义注解

    深入JAVA注解(Annotation):自定义注解一、基础知识:元注解要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解:  元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它annotation类型作说明。Java5.0定义的元注解:    1.@Targe…

    2022年7月13日
    20
  • SSM项目部署到阿里云服务器。只需要五个步骤。

    SSM项目部署到阿里云服务器。只需要五个步骤。最近在看很多ssm项目部署到阿里云的教程:踩了很多坑,所以希望大家部署时候有所借鉴吧。有什么不懂可以联系qq交流:980631161.主要分为五个步骤:1.购买服务器2下载xshell和Xftp63.在服务器上安装jdk,mysql,tomcat。4.数据库准备数据5.maven项目生成war文件。1.购买服务器在阿里云购买一个ESC服务器网址是:https://www….

    2022年6月20日
    58
  • @RequestBody 和 @RequestParam可以同时使用

    @RequestBody 和 @RequestParam可以同时使用@RequestParam和@RequestBody这两个注解是可以同时使用的。网上有很多博客说@Requestparam和@RequestBody不能同时使用,这是错误的。根据HTTP协议,并没有说post请求不能带URL参数,经验证往一个带有参数的URL发送post请求也是可以成功的。自己个人实际验证结果:packagecom.example.model;import…

    2022年6月16日
    98
  • python基础知识思维导图总结

    python基础知识思维导图总结今天给同学用思维导图整理了python基础知识,供大家复习参考学习,希望每天都有进步。鸡汤几点:没有目标永远不知道方向在哪?不去尝试永远不知道答案和结果?打破习惯、冲击惯性思维、不断学习,才能使你越来越有价值。行动永远比坐以待毙更幸运。主要内容:一、Python简介二、输入输出三、变量、数据基本类型与操作四、条件判断五、常用数据类型–列表六、常用数据类型–元组tuple、字典dict(全称dictionary)七、常用数据类型–布尔值(True

    2022年10月16日
    4
  • seekg()/seekp()与tellg()/tellp()的用法详解

    seekg()/seekp()与tellg()/tellp()的用法详解对输入流操作:seekg()与tellg()对输出流操作:seekp()与tellp()下面以输入流函数为例介绍用法:seekg()是对输入文件定位,它有两个参数:第一个参数是偏移量,第二个参数是基地址。对于第一个参数,可以是正负数值,正的表示向后偏移,负的表示向前偏移。而第二个参数可以是:ios::beg:表示输入流的开始位置ios::cur:表示输入流的当前位置io

    2022年6月9日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号