矩形矩阵的Lapack正交化函数

时间:2016-03-06 09:34:33

标签: linear-algebra lapack cusolver qr-decomposition

我想知道在Lapack中是否存在一个函数,用于对一个非常高且细小的矩阵的列进行正交归一化。 A similar previous question asked this question, presumably in the context of a square matrix。我的设置如下:我有一个M乘N矩阵A,我试图对列进行正交归一化。

所以,我的第一个想法是做一个qr分解。在Lapack中进行qr分解的函数似乎是dgeqrf和dormqr。大。但是,我的问题如下:我的矩阵A太高了,我不想实际计算所有的Q,因为它是M由M.实际上,我不能实例化在我的任何计算过程中,M都是M矩阵(它不适合存储器)。我宁愿只计算wikipedia calls Q1的矩阵。但是,我似乎找不到办法让这项工作。

奇怪的是,我认为这是可能的。特别是Numpy有一个函数numpy.linalg.qr,似乎就是这样做的。然而,即使在阅读了他们的源代码之后,我也无法弄清楚他们是如何使用lapack调用来实现这一点的。

人们有想法吗?我强烈希望这只使用lapack函数,因为我希望将此代码移植到CuSOLVE,后者已经为GPU实现了几个lapack函数(包括dgeqrf和dormqr)。

1 个答案:

答案 0 :(得分:0)

您想要QR的“瘦身”或“经济尺寸”版本。在matlab中,您可以使用:

[Q,R] = qr(A,0);

我没有直接使用过Lapack,但我想在那里会有相应的电话。看来你可以在python中用:

来做到这一点
numpy.linalg.qr(a, mode='reduced')