是否有一个易于使用的c ++库用于矩形矩阵的“细”QR分解? Eigen似乎只支持完整的Q矩阵。我可以拿一个完整的Q并丢弃一些列,但是开始计算它们会更有效吗?
答案 0 :(得分:3)
Newmat完全符合您的要求。
要将A分解为QR,您可以执行以下操作:
Matrix Q = A;
UpperTriangularMatrix R;
QRZ(Q, R)
如果A是3x5矩阵,则R将为3x3,Q也将为3x5。
答案 1 :(得分:1)
即使这个问题有点陈旧,但是记录:Eigen没有明确地计算Q矩阵,而是一系列Householder向量,它可以直接乘以任何矩阵(具有正确的行数)。 / p>
如果您实际上明确需要精简Q矩阵,只需乘以所需大小的单位矩阵:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(60)
ax = sns.distplot(x, label="BsrDI", bins=np.linspace(-3,3,10), kde=False,
hist_kws={"lw":3, "edgecolor": (1,0,0,0.75),
"color":(1,0,0,0.25),"alpha":None})
plt.show()