首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否将SuiteSparse.SPQR.QRSparseQ转换为SparseMatrixCSC?

是否将SuiteSparse.SPQR.QRSparseQ转换为SparseMatrixCSC?
EN

Stack Overflow用户
提问于 2020-07-22 21:22:39
回答 1查看 50关注 0票数 1

我有一个问题,为稀疏矩阵的QR分解转换本机稀疏格式需要花费很长时间。但是,我需要它在CSC格式中用于进一步的计算。

代码语言:javascript
复制
using LinearAlgebra, SparseArrays
N = 1000
A = sprand(N,N,1e-4)
@time F = qr(A)
@time F.Q
@time Q_sparse = sparse(F.Q)

0.000420 seconds (1.15 k allocations: 241.017 KiB)
0.000008 seconds (6 allocations: 208 bytes)
6.067351 seconds (2.00 M allocations: 15.140 GiB, 36.25% gc time)

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-22 23:46:21

好吧,我找到问题了。对于其他尝试这样做的人:

代码语言:javascript
复制
factors = F.Q.factors
τ       = F.Q.τ
Nτ = size(factors)[2]
Isp = sparse(I(N));
@time Q_constr = prod(Isp - factors[:,i]*τ[i]*factors[:,i]' for i in 1:Nτ)
Q_constr ≈ Q_sparse

0.084461 seconds (62.64 k allocations: 3.321 MiB, 18.28% gc time)
true

您可以看到sparse(F.Q)方法不知何故使用了错误的表示。如果你像我上面做的那样构造Q,它将会快得多。

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

https://stackoverflow.com/questions/63035209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档