避免数组分配有利于性能。但是,我还没有理解执行矩阵 QR 分解的最有效方法是什么A
。(注意:需要 Q 和 R 矩阵)
简单地使用
Q, R = qr(A)
可能不是最好的主意,因为它同时分配了 Q 和 R,两者都可以重新分配。
该功能qrfact
允许以打包格式存储分解。但是,之后我仍然会写:
F = qrfact(A); Q = F[:Q]; R = F[:R]
再次为Q
and分配新数组R
。最后,文档还建议了该qrfact!
函数,该函数通过覆盖输入 A 来节省空间,而不是创建一个副本。但是,如果一个人使用F = qrfact!(A)
了被覆盖的东西,在某种意义上说它不是orA
是没有用的,这是一个人(特别是我)需要的。Q
R
所以我的两个问题是:
如果您只关心矩阵
Q
并且R
重新分配它们没有问题,那么执行 QR 分解的最佳/最有效方法是什么。A
调用时矩阵中实际写的是什么qrfact!(A)
?