Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

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 之前推出

另请参阅

| |