qrdelete
从 QR 分解中删除列或行
语法
[Q1,R1] = qrdelete(Q,R,j)
[Q1,R1] = qrdelete(Q,R,j,'col')
[Q1,R1] = qrdelete(Q,R,j,'row')
说明
[Q1,R1] = qrdelete(Q,R,j)
返回矩阵 A1
的 QR 分解,其中 A1
是其列 A(:,j)
已删除的 A
,[Q,R] = qr(A)
是 A
的 QR 分解。
[Q1,R1] = qrdelete(Q,R,j,'col')
与 qrdelete(Q,R,j)
相同。
[Q1,R1] = qrdelete(Q,R,j,'row')
返回矩阵 A1
的 QR 分解,其中 A1
是其行 A(j,:)
已删除的 A
,[Q,R] = qr(A)
是 A
的 QR 分解。
示例
A = magic(5); [Q,R] = qr(A); j = 3; [Q1,R1] = qrdelete(Q,R,j,'row'); Q1 = 0.5274 -0.5197 -0.6697 -0.0578 0.7135 0.6911 0.0158 0.1142 0.3102 -0.1982 0.4675 -0.8037 0.3413 -0.4616 0.5768 0.5811 R1 = 32.2335 26.0908 19.9482 21.4063 23.3297 0 -19.7045 -10.9891 0.4318 -1.4873 0 0 22.7444 5.8357 -3.1977 0 0 0 -14.5784 3.7796
返回有效的 QR 分解,虽然可能与以下项不同:
A2 = A; A2(j,:) = []; [Q2,R2] = qr(A2) Q2 = -0.5274 0.5197 0.6697 -0.0578 -0.7135 -0.6911 -0.0158 0.1142 -0.3102 0.1982 -0.4675 -0.8037 -0.3413 0.4616 -0.5768 0.5811 R2 = -32.2335 -26.0908 -19.9482 -21.4063 -23.3297 0 19.7045 10.9891 -0.4318 1.4873 0 0 -22.7444 -5.8357 3.1977 0 0 0 -14.5784 3.7796
算法
qrdelete
函数使用一系列的 Givens 旋转将分解的相应元素置零。[1]
参考
[1] Golub, Gene H., and Charles F. Van Loan. Matrix Computations. 4th ed. Baltimore, MD: Johns Hopkins University Press, 2013, Sections 6.5.2–6.5.3, pp. 335–338.
扩展功能
版本历史记录
在 R2006a 之前推出