Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在numpy或matlab中从满秩的非方阵获得可逆方阵

在numpy或matlab中从满秩的非方阵获得可逆方阵
EN

Stack Overflow用户
提问于 2010-08-21 21:19:09
回答 2查看 2.6K关注 0票数 4

假设你有一个满秩的NxM矩阵A,其中M>N。如果我们用C_i (维度为Nx1)表示列,那么我们可以将矩阵写成

代码语言:javascript
运行
AI代码解释
复制
A = [C_1, C_2, ..., C_M]

如何获得原始矩阵A的第一个线性无关的列,以便构造一个新的NxN矩阵B,该矩阵是一个具有非零行列式的可逆矩阵。

代码语言:javascript
运行
AI代码解释
复制
B = [C_i1, C_i2, ..., C_iN]

如何在matlab或python numpy中找到索引{i1, i2, ..., iN}?使用奇异值分解可以做到这一点吗?代码片段将非常受欢迎。

EDIT:为了使这一点更具体,请考虑以下python代码

代码语言:javascript
运行
AI代码解释
复制
from numpy import *
from numpy.linalg.linalg import det

M = [[3, 0, 0, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 0, 0, 1], 
     [0, 2, 0, 0, 0]]
M = array(M)

I = [0,1,2,4]
assert(abs(det(M[:,I])) > 1e-8)

因此,给定一个矩阵M,就需要找到一组N线性无关列向量的索引。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-22 03:12:43

在MATLAB中很容易,很容易。使用QR,特别是旋转的QR。

代码语言:javascript
运行
AI代码解释
复制
M = [3 0 0 0 0;
     0 0 1 0 0;
     0 0 0 0 1; 
     0 2 0 0 0]

[Q,R,E] = qr(M)
Q =
     1     0     0     0
     0     0     1     0
     0     0     0     1
     0     1     0     0

R =
     3     0     0     0     0
     0     2     0     0     0
     0     0     1     0     0
     0     0     0     1     0

E =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     0     1
     0     0     0     1     0

E的前4列指定要使用的M列,即列1、2、3、5。如果您想要M列,只需形成乘积M*E。

代码语言:javascript
运行
AI代码解释
复制
M*E
ans =
     3     0     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     2     0     0     0

顺便说一句,使用det来确定一个矩阵是否奇异是绝对、肯定、绝对最糟糕的方法。

请改用rank。

从本质上讲,您不应该在MATLAB中使用det,除非您了解为什么它是一件如此糟糕的事情,并且您选择使用它。

票数 6
EN

Stack Overflow用户

发布于 2010-08-21 22:00:20

我的第一个想法是尝试M列中的N个可能的组合。这可以像这样完成(在Python中):

代码语言:javascript
运行
AI代码解释
复制
import itertools
import numpy.linalg

# 'singular' returns whether a matrix is singular.
# You could use something more efficient than the determinant
# (I'm not sure what options there are in NumPy)
singular = lambda m: numpy.linalg.det(m) == 0

def independent_square(A):
    N,M = A.shape
    for colset in itertools.combinations(xrange(M), N):
        B = A[:,colset]
        if not singular(B):
            return B

如果您想要列索引而不是生成的方阵,只需用return colset替换return B即可。或者,您可以使用return colset,B同时实现这两个功能。

我不知道SVD会有什么帮助。事实上,除了反复试验之外,我想不出任何纯粹的数学运算可以将A转换为B(甚至是任何可以计算出B=A.Q的MxN列选择矩阵Q的运算)。但是如果你想知道它是否存在,math.stackexchange.com将是一个很好的去处。

如果您所需要的只是一种计算方法,那么上面的代码应该就足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3539026

复制
相关文章
如何查看Django ORM执行的SQL语句
Django ORM对数据库操作的封装相当完善,日常大部分数据库操作都可以通过ORM实现。
BigYoung小站
2020/05/06
1.9K0
如何修改django的app在admin中显示的名称
在django的开发中,很多时候我们希望app在admin中显示成我们想要的中文名,而不是显示默认的app_label名称。 比如我们有一个blog应用,在我们的blog app目录下面,默认会生成一个apps.py文件,类似:
小海怪的互联网
2019/09/25
3.5K0
如何修改django的app在admin中显示的名称
网站如何加入显示运行时间
世间万物皆苦,你明目张胆的偏爱就是救赎。 网站加入运行时间精确到秒 把下面代码加到你需要的地方,很简单的,我还是比较喜欢这样的个性代码的 <span id="runtime_span"></span> <script type="text/javascript"> function show_runtime() {window.setTimeout("show_runtime()",1000); X=new Date("10/16/2017 5:22:00"); Y=new Date(); T=(Y.
白黎
2023/03/16
7550
网站如何加入显示运行时间
Django admin显示中文
在定义 Model 类的时候,在 Meta 里面显式指定 verbose_name 和 verbose_name_plural即可指定该模型在 Admin 里面显示的别名。
用户2936342
2018/08/27
1.2K0
django显示当前时间
直接用HttpResponse返回一个html标签不太好,如果代码比较多,就不合适了。
py3study
2018/08/02
3.1K0
如何修改django的app在admin后台中显示的名称,也就是显示为中文
第一步 在以上的文件里面写你想要展示的中文 第二部 将那个方法在init文件里面导入,重新启动项目就可以了
一写代码就开心
2020/12/01
1.4K0
如何修改django的app在admin后台中显示的名称,也就是显示为中文
Spring Boot 如何监控 SQL 运行情况?
今天想和大家聊一聊 Druid 中的监控功能。 Druid 数据库连接池相信很多小伙伴都用过,个人感觉 Druid 是阿里比较成功的开源项目了,不像 Fastjson 那么多槽点,Druid 各方面一直都比较出色,功能齐全,使用也方便,基本的用法就不说了,今天我们来看看 Druid 中的监控功能。 1. 准备工作 首先我们来创建一个 Spring Boot 工程,引入 MyBatis 等,如下: 选一下 MyBatis 和 MySQL 驱动,做一个简单的测试案例。 先来连接一下数据库: spring.da
江南一点雨
2022/03/04
6130
SpringBoot 如何统计、监控 SQL运行情况?
上述配置文件的参数可以在 com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties 和 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties中找到;
鱼找水需要时间
2023/02/16
1.6K0
SpringBoot 如何统计、监控 SQL运行情况?
[Centos7.2]Django挂载后台运行
在Linux环境中运行这个命令,倘若是通过ssh连接,在连接关闭后Dango也会跟着中断!
贰叁壹小窝
2020/07/22
1.2K0
显示mybatis的执行的sql
让mybatis也像hibernate.show_sql一样显示执行sql
似水的流年
2018/01/14
6850
显示mybatis的执行的sql
显示mybatis的执行sql 让mybatis也像hibernate.show_sql一样显示执行sql 在log4j.properties 添加 log4j.rootLogger=DEBUG, Console #Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console
似水的流年
2018/01/18
9020
显示mybatis的执行的sql
显示mybatis的执行sql 让mybatis也像hibernate.show_sql一样显示执行sql 在log4j.properties 添加
似水的流年
2019/12/08
8030
如何让django的model名和应用名显示为中文
如何修改django.admin中一个应用的名称:复制下面的代码放入应用目录下的init.py中即可,通过修改 verbose_name = u’中文名称’
菲宇
2022/12/21
8460
docker 运行Django项目
已经写好了一个Django项目,需要将这个项目用docker封装一个镜像,使用k8s发布!
py3study
2020/02/24
1.3K0
Django 中图片的上传及显示
在 Django 中,上传文件不同于普通服务器的上传方法,在普通服务器中只需要使用一个 Controller 来控制文件的上传即可完成,但是在 Django 中,则需要额外使用数据库资源来存储文件。本文将说明如何使用 Django 接收、保存并且返回图片。
Kindem
2022/08/12
3.4K0
如何杀掉pg数据库正在运行的sql
我们在生产环境可能经常遇到长sql,长sql对数据库的影响还是挺大的,不仅可能对主机资源消耗较大,还可能会阻塞其他sql的正常执行,所以对于长sql我们要尤其注意。一般生产环境都会配置长sql告警,可以根据业务情况调整告警阈值。
数据库架构之美
2019/12/18
4.1K0
Mybatis显示SQL语句
众所周知,hibernate可以通过配置show_sql在控制台显示sql语句,Mybatis可不可以呢?当然是可以的,将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试:
河岸飞流
2019/08/09
2K0
pycharm怎么运行django项目_django怎么用
 原文转载自:http://www.cnblogs.com/Leo_wl/p/5824541.html
全栈程序员站长
2022/09/27
2.4K0
pycharm怎么运行django项目_django怎么用
点击加载更多

相似问题

ionic:添加自己的cordova插件

31

添加oneSignal插件cordova - Ionic 2

10

Ionic Cordova插件

118

Cordova诊断插件不工作

12

在Ionic 2中添加一个cordova插件

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档