快速计算超大矩阵的eigenvalues的方法 java_性能 – 优化非常大的稀疏矩阵的秩计算...

我有一个稀疏矩阵,如

A =

(1,1) 1

(3,1) 1

(1,2) 1

(2,2) 1

(1,3) 1

(3,3) 1

(4,3) 1

(4,4) 1

A的完整矩阵可以看如下:

full(A) =

1 1 1 0

0 1 0 0

1 0 1 0

0 0 1 1

我想通过快速方式找到矩阵A的等级(因为我的矩阵可以扩展到10000 x 20000).我尝试通过两种方式来做,但它给出了不同的结果

>转换为完整矩阵并使用查找排名

rank(full(A)) = 3

>使用sprank查找排名

sprank(A) = 4

真正的答案必须是3,这意味着使用第一种方式.但是,需要很长时间才能找到排名,特别是大尺寸的矩阵.我知道第二种方式给出4的原因是因为sprank只告诉你矩阵有多少行/列有非零元素,而rank则报告矩阵的实际等级,表示矩阵的行数是线性独立的. sprank(A)是4但是rank(A)只有3,因为你可以把第三行写成其他行的线性组合,特别是A(2,:) – A(1,:).

我的问题是如何找到具有最低时间消耗的稀疏矩阵的秩

更新:我试图用某种方式.然而,它报告了更长的时间消耗

%% Create random matrix

G = sparse(randi(2,1000,1000))-1;

A=sparse(G) %% Because my input matrix is sparse matrix

%% Measure performance

>> tic; rank(full(A)); toc

Elapsed time is 0.710750 seconds.

>> tic; svds(A); toc

Elapsed time is 1.130674 seconds.

>> tic; eigs(A); toc

Warning: Only 3 of the 6 requested eigenvalues converged.

> In eigs>processEUPDinfo at 1472

In eigs at 365

Elapsed time is 4.894653 seconds.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值