Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor
無限の行数をもつ実数値の行列の Q-less QR 分解

ライブラリ:
Fixed-Point Designer HDL Support /
Matrices and Linear Algebra /
Matrix Factorizations
説明
Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor ブロックは QR 分解を使用してサイズを抑えた QR 分解 A = QR の上三角因子 R を計算します (Q は計算しません)。A は、ストリーミング データを表す実数値の無限大の tall 行列です。
正則化パラメーターが非ゼロの場合、Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor ブロックは A の行を因数分解する前に最初の上三角因子 R を λIn に初期化します。ここで、λ は正則化パラメーター、In = eye(n) です。
例
Implement Hardware-Efficient Real Partial-Systolic Q-less QR with Forgetting Factor
How to use the Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor block.
Determine Fixed-Point Types for Q-less QR Decomposition
Use fixed.qlessqrFixedpointTypes to determine fixed-point types for
computation of Q-less QR decomposition.
端子
入力
実数行列 A の行。ベクトルとして指定します。A はストリーミング データの無限大の tall 行列です。A が固定小数点データ型を使用する場合、A は符号付きで、2 進小数点スケーリングを使用しなければなりません。傾きとバイアス表現は固定小数点データ型ではサポートされていません。
データ型: single | double | fixed point
入力が有効であるかどうか。boolean スカラーとして指定します。この制御信号は A(i,:) 入力端子からのデータが有効であるかどうかを示します。この値が 1 (true) で ready の値が 1 (true) の場合、ブロックは A(i,:) 入力端子の値を取得します。この値が 0 (false) の場合、ブロックは入力サンプルを無視します。
true の validIn 信号を送信してから、ready が false に設定されるまでに、多少の遅延が生じることがあります。すべてのデータが確実に処理されるように、別の true の validIn 信号を送信するときは、ready が false に設定されるまで待たなければなりません。
データ型: Boolean
内部状態をクリアするかどうか。boolean スカラーとして指定します。この値が 1 (true) の場合、ブロックは現在の計算を停止し、すべての内部状態をオフにします。この値が 0 (false) で validIn の値が 1 (true) の場合、ブロックは新しいサブフレームを開始します。
データ型: Boolean
出力
サイズを抑えた QR 分解行列 R に Forgetting factor パラメーターを乗算した値。行列として返されます。R は上三角行列です。行列 R のサイズは n 行 n 列です。R の出力のデータ型は A(i,:) の入力と同じです。
データ型: single | double | fixed point
出力データが有効であるかどうか。boolean スカラーとして指定します。この制御信号は出力端子 R のデータが有効であるかどうかを示します。この値が 1 (true) の場合、ブロックは行列 R を正常に計算しています。この値が 0 (false) の場合、出力データは有効ではありません。
データ型: Boolean
ブロックの準備が整っているかどうか。boolean スカラーとして返されます。この制御信号は新しい入力データに対するブロックの準備が整っているかどうかを示します。この値が 1 (true) で validIn が 1 (true) の場合、ブロックは入力データを次のタイム ステップで受け入れます。この値が 0 (false) の場合、ブロックは入力データを次のタイム ステップで無視します。
true の validIn 信号を送信してから、ready が false に設定されるまでに、多少の遅延が生じることがあります。すべてのデータが確実に処理されるように、別の true の validIn 信号を送信するときは、ready が false に設定されるまで待たなければなりません。
データ型: Boolean
パラメーター
入力行列 A の列数。正の整数値スカラーとして指定します。
プログラムでの使用
ブロック パラメーター: n |
| 型: 文字ベクトル |
| 値: 正の整数値のスカラー |
既定の設定: 4 |
行列の各行を因数分解した後に適用される忘却係数。実数の正のスカラーとして指定します。A の各行に無限に入力されるたびに、出力が更新されます。
プログラムでの使用
ブロック パラメーター: forgetting_factor |
| 型: 文字ベクトル |
| 値: 正の整数値のスカラー |
既定の設定: 0.99 |
正則化パラメーター。非負のスカラーとして指定します。正則化パラメーターを小さい正の値にすると、問題の調整を向上させ、推定値の分散を小さくすることができます。バイアスがありますが、推定値の分散が小さいと、多くの場合、最小二乗推定値と比べて平均二乗誤差が小さくなります。
プログラムでの使用
ブロック パラメーター: regularizationParameter |
| 型: 文字ベクトル |
| 値: 非負の実数スカラー |
既定の設定: 0 |
アルゴリズム
Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor ブロックは、次の再帰を実装し、忘却係数 α を使用して連続的にストリーミングする n 行 1 列の行ベクトル A(k,:) の上三角因子 R を計算します。これは行列 A が無限大の tall である場合と同様です。範囲 0 < α < 1 の忘却係数を使用すると、無制限に積分されなくなります。
k 番目の入力 A(k,:) を処理した後の上三角因子 Rk は、次の反復を使用して計算されます。
これは、行列 Ak の上三角因子 Rk を計算することと数学的に等価です。これは次のように定義されますが、実際にはこのブロックで Ak は作成されません。
上三角因子の準備が整うと、前進代入と後退代入が現在の入力 B で計算され、出力 X が生成されます。
シストリック実装はスペースの制約よりも計算速度を優先します。一方、バーストによる実装は演算速度を犠牲にしてスペースの制約を優先します。次の表は、行列の分解と連立線形方程式の求解に使用できる実装間のトレードオフを示しています。
| 実装 | スループット | レイテンシ | 領域 |
|---|---|---|---|
| シストリック | 高 | O(nlog2(m)) | O(mn2) |
| 部分的なシストリック | 中 | O(mn) | O(n2) |
| バースト | 低 | O(mn) | O(n) |
m は行列 A の行数で、n は行列 A の列数です。アーキテクチャに関係なく、語長が大きくなるほど、スループットは低下し、レイテンシと回路面積は増大します。
用途に適したブロックの選択に関する追加の考慮事項については、Choose a Block for HDL-Optimized Fixed-Point Matrix Operationsを参照してください。
このブロックでは AMBA AXI ハンドシェイク プロトコル [1] を使用しています。データと制御情報の転送に valid/ready ハンドシェイク プロセスが使用されます。この双方向の制御メカニズムにより、マネージャーと配下の間で情報をやり取りするレートをマネージャーと配下の双方で制御できます。valid 信号はデータが使用可能であることを示します。ready 信号はブロックでデータを受け入れ可能であることを示します。valid 信号と ready 信号の両方が High の場合にのみデータの転送が行われます。
"Partial-Systolic QR Decomposition with Forgetting Factor" のブロックは、行列 A を行単位で受け入れて処理します。最初の m 個の行を受け入れた後、ブロックは行列 R の単一のベクトルとしての出力を開始します。これ以降、ブロックは行が入力されるたびに行列 R を計算します。部分的なシストリック実装ではパイプライン化された構造を使用するため、ブロックは現在の行列の結果を出力する前に新しい行列入力を受け入れることができます。
たとえば、入力行列 A が 3 行 3 列であるとします。また、validIn のアサートが ready よりも前、つまり上流のデータ ソースが Q-less QR 分解よりも速いと仮定します。

この図で次のとおりです。
A1r1は 1 つ目の行列 A の 1 行目、R1は 1 つ目の行列 R などのようになります。validInからreadyまで — 行が正常に入力されてから、ブロックで次の行の受け入れ準備ができるまで。validInからvalidOutまで — 行が正常に入力されてから、ブロックで対応する解の出力が開始されるまで。
次の表に、"Partial-Systolic Q-less QR Decomposition with Forgetting Factor" のブロックのタイミングの詳細を示します。
| ブロック | validIn から ready まで (サイクル) | validIn から validOut まで (サイクル) |
|---|---|---|
| Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor | wl + 7 | (wl + 6)*n + 3 |
| Complex Partial-Systolic Q-less QR Decomposition with Forgetting Factor | wl + 9 | (wl + 7.5)*2*n + 3 |
この表で、m は行列 A の行数を表しており、n は行列 A の列数です。wl は A の語長を表しています。
A のデータ型が固定小数点の場合、wl は語長です。
A のデータ型が double の場合、wl は 53 です。
A のデータ型が single の場合、wl は 24 です。
このブロックは、Simulink® HDL ワークフロー アドバイザーを使用した HDL コード生成をサポートしています。例については、Simulink モデルからの HDL コード生成と FPGA 合成 (HDL Coder)およびImplement Digital Downconverter for FPGA (DSP HDL Toolbox)を参照してください。
R2023a において: 次の表は、リソース使用状況の結果の概要を示したものです。
この例のデータは、Xilinx® Zynq®-7 ZC706 評価ボード (スピード グレード -2) でブロックを合成して生成したものです。
合成に使用したパラメーターは次のとおりです。
ブロック パラメーター:
m = 10n = 10p = 1行列 A の次元: 10 行 10 列
行列 B の次元: 10 行 1 列
入力データ型:
sfix18_En12
| リソース | 使用 |
|---|---|
| LUT | 30190 |
| LUTRAM | 10 |
| フリップ フロップ | 17570 |
| BRAM | 31 |
R2022b において: 次の各表に、配置配線後のリソース使用状況の結果とタイミングの概要をそれぞれ示します。
この例のデータは、Xilinx Zynq UltraScale™ + RFSoC ZCU111 評価ボードでブロックを合成して生成したものです。合成ツールは Vivado® v.2020.2 (win64) です。
合成に使用したパラメーターは次のとおりです。
ブロック パラメーター:
n = 16p = 1行列 A の次元: inf 行 16 列
行列 B の次元: 16 行 1 列
入力データ型:
sfix16_En14ターゲット周波数: 300 MHz
| リソース | 使用 | 使用可能 | 使用率 (%) |
|---|---|---|---|
| CLB LUT | 112218 | 425280 | 26.39 |
| CLB レジスタ | 77563 | 850560 | 9.12 |
| DSP | 0 | 4272 | 0.00 |
| ブロック RAM タイル | 0 | 1080 | 0.00 |
| URAM | 0 | 80 | 0.00 |
| 値 | |
|---|---|
| 要件 | 3.3333 ns |
| データ パス遅延 | 3.191 ns |
| スラック | 0.125 ns |
| クロック周波数 | 311.69 MHz |
参照
[1] "AMBA AXI and ACE Protocol Specification Version E." https://developer.arm.com/documentation/ihi0022/e/
拡張機能
傾きとバイアス表現は固定小数点データ型ではサポートされていません。
HDL Coder™ には、HDL の実装および合成されたロジックに影響する追加のコンフィギュレーション オプションがあります。
このブロックには 1 つの既定の HDL アーキテクチャがあります。
| 一般 | |
|---|---|
| ConstrainedOutputPipeline | 既存の遅延を設計内で移動することによって出力に配置するレジスタの数。分散型パイプラインではこれらのレジスタは再分散されません。既定の設定は |
| InputPipeline | 生成されたコードに挿入する入力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
| OutputPipeline | 生成されたコードに挿入する出力パイプライン ステージ数。分散型パイプラインと制約付き出力パイプラインでは、これらのレジスタを移動できます。既定の設定は |
固定小数点データ型のみをサポートします。
バージョン履歴
R2020b で導入ブロック線図の更新時に、部分的なシストリック パイプラインを構成するループが展開されます。この更新された内部アーキテクチャにより、シミュレーションおよびコード生成のデッド演算が削除されるため、必要なハードウェア リソースの数が大幅に少なくなります。このブロックは、以前のリリースのライブラリ バージョンのこれらのブロックに対して、クロックおよびビットトゥルーの忠実度でシミュレーションを行います。
| リソース | R2022b | R2023a |
|---|---|---|
| LUT | 55482 | 30190 |
| LUTRAM | 10 | 10 |
| フリップ フロップ | 32375 | 17570 |
| BRAM | 45 | 31 |
この例のデータは、Xilinx Zynq-7 ZC706 評価ボード (スピード グレード -2) でブロックを合成して生成したものです。
合成に使用したパラメーターは次のとおりです。
ブロック パラメーター:
m = 10n = 10p = 1行列 A の次元: 10 行 10 列
行列 B の次元: 10 行 1 列
入力データ型:
sfix18_En12
Real Partial-Systolic Q-less QR Decomposition with Forgetting Factor ブロックで Tikhonov 正則化パラメーターがサポートされるようになりました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)