Main Content

fixed.qlessQRUpdate

QR 分解の更新

R2020b 以降

説明

R = fixed.qlessQRUpdate(R, y) は上三角 R をベクトル y で更新します。

この構文は、次と等価です。

[~,R] = qr([R;y],0);

R = fixed.qlessQRUpdate(R, y, forgettingFactor) は上三角 R をベクトル y で更新し、その結果に forgettingFactor で指定された値を乗算します。

この構文は、次と等価です。

[~,R] = qr([R;y],0);
R(:) = forgettingFactor * R;

すべて折りたたむ

この例では、新しいデータがストリーミングされるのに応じて行列の上三角因子を更新する方法を示します。

行列を定義し、関数 fixed.qlessQR を使用して上三角因子 R を計算します。

rng('default');
m = 20;
n = 4;
A = randn(m,n)
A = 20×4

    0.5377    0.6715   -0.1022   -1.0891
    1.8339   -1.2075   -0.2414    0.0326
   -2.2588    0.7172    0.3192    0.5525
    0.8622    1.6302    0.3129    1.1006
    0.3188    0.4889   -0.8649    1.5442
   -1.3077    1.0347   -0.0301    0.0859
   -0.4336    0.7269   -0.1649   -1.4916
    0.3426   -0.3034    0.6277   -0.7423
    3.5784    0.2939    1.0933   -1.0616
    2.7694   -0.7873    1.1093    2.3505
      ⋮

R = fixed.qlessQR(A)
R = 4×4

    7.1017   -2.0103    1.1646    0.7999
         0    4.8784    0.5745   -0.3222
         0         0    3.1658   -0.4570
         0         0         0    4.4965

新しいデータ (センサー アレイからの新しい値など) が着信すると、関数 fixed.qlessQRUpdate を使用して上三角因子を新しいデータで更新できます。

y1 = [1,1,1,1];
R = fixed.qlessQRUpdate(R,y1)
R = 4×4

    7.1718   -1.8513    1.2927    0.9315
         0    5.0412    0.7646   -0.0904
         0         0    3.2332   -0.2584
         0         0         0    4.6074

y2 = [1,1,1,1];
R = fixed.qlessQRUpdate(R,y2)
R = 4×4

    7.2411   -1.6954    1.4184    1.0607
         0    5.1929    0.9371    0.1191
         0         0    3.2892   -0.0962
         0         0         0    4.6928

新しいデータが着信するのに応じて上三角因子を更新した結果は、すべてのデータをもつ上三角因子を計算することと等価です。

R = fixed.qlessQR([A;y1;y2])
R = 4×4

    7.2411   -1.6954    1.4184    1.0607
         0    5.1929    0.9371    0.1191
         0         0    3.2892   -0.0962
         0         0         0    4.6928

データを無制限に累積することなく不定数の行を連続的にストリーミングする場合は (センサー アレイから値を連続的に読み取る場合など)、忘却係数を指定します。

forgettingFactor = exp(-1/(2*m))
forgettingFactor = 0.9753
y3 = [1, 1, 1, 1];
R = fixed.qlessQRUpdate(R,y3,forgettingFactor)
R = 4×4

    7.1294   -1.5046    1.5038    1.1582
         0    5.2031    1.0676    0.3020
         0         0    3.2543    0.0379
         0         0         0    4.6431

入力引数

すべて折りたたむ

上三角入力。行列として指定します。

データ型: single | double | fi
複素数のサポート: あり

測定入力。ベクトルとして指定します。

データ型: single | double | fi
複素数のサポート: あり

忘却係数。0 ~ 1 の非負のスカラーとして指定します。忘却係数によって、過去のデータに指定される重みが決まります。forgettingFactor の値は、R の各行の処理後に R に乗算されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

出力引数

すべて折りたたむ

更新された上三角因子。行列として返されます。

拡張機能

バージョン履歴

R2020b で導入