如何在Numpy中实现类似Matlab的QR分解(维度匹配)
在NumPy中实现类似Matlab的QR分解方法
默认情况下,NumPy的np.linalg.qr()函数返回精简版QR分解结果:$Q\in \mathbb{R}^{mxn}$、$R\in \mathbb{R}^{nxn}$;而Matlab默认返回的是完整版分解:$Q\in \mathbb{R}^{mxm}$、$R\in \mathbb{R}^{mxn}$。
你只需要在调用np.linalg.qr()时指定mode='complete'参数,就能得到和Matlab一致的完整版QR分解结果:
import numpy as np # 示例:创建一个5×3的随机矩阵 A = np.random.rand(5, 3) # 执行完整版QR分解 Q, R = np.linalg.qr(A, mode='complete') # 验证维度 print(Q.shape) # 输出 (5, 5),对应m×m的正交矩阵 print(R.shape) # 输出 (5, 3),对应m×n的上三角矩阵(下方2行全为0)
补充说明:
- NumPy的
qr函数默认mode='reduced',生成精简版分解; mode='complete'会生成包含所有m个正交基的完整正交矩阵Q,对应的R矩阵是m×n的上三角结构,下方的m-n行元素全为0,完全匹配Matlab默认的QR分解行为。
内容的提问来源于stack exchange,提问作者Julian Cederlöf Alamos Guerra
相关产品推荐
相关产品推荐

