行列を使用する



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

行列データタイプは行列演算(特に一部の線形代数の演算)に適した実数または複素数のスカラデータの行または列を保持するため、2次元配列の代わりに行列データタイプを使用して行列データを表します。行列演算を実行する数学VIは、行列データタイプを受け入れて行列の結果を返します。これにより、データフローで後続する多態性VIおよび関数において、行列特有の演算を実行するように有効化します。数学VIまたは関数が行列演算を実行しない状態で行列データタイプを受け入れると、このVIは自動的に行列データタイプを2D配列に変換します。デフォルトで行列演算を実行するVIに2D配列を配線すると、2D配列のデータタイプによって、VIは自動的に2D配列を実数または複素数の行列に変換します。

ほとんどの数値関数は行列データタイプおよび行列演算をサポートしています。たとえば、「」関数を使用すると、他の行列または他の数値で行列を乗算できます。基本的な数値データタイプおよび複素線形代数関数を組み合わせて、正確な行列演算を実行する数値アルゴリズムを作成します。

メモ  VIまたは関数がデータを行列から2D配列(またはその逆)に変換すると、強制ドットがVIまたは関数に表示されます。LabVIEWでは2D配列を保持する方法と同じように行列を保持するため、この種のデータ変換はパフォーマンスには影響しません。

実行列には倍精度要素が含まれ、複素行列には倍精度成分を持つ複素要素が含まれます。行列には2つの次元のみがあります。行列の配列を作成することはできません。「バンドル」関数を使用して、2つ以上の行列を組み合わせてクラスタを作成します。行列には配列と同じ制限があります。

行列」関数を使用して、行列の要素、行、列を操作します。「行列」関数は行列データタイプを返します。たとえば、「行列要素を取得」関数で行列の行および列を抽出して、スカラ値の1D配列の代わりに、1行または列の行列を生成します。この行列を「行列を作成」関数で他の配列と組み合わせて、スカラ値の2D配列の代わりに行列を生成します。

行列の次元を減少させるように作成したVIは、1D配列、倍精度小数点、または倍精度複素数にデータを変換する必要があります。2Dストラクチャを再構築する場合に1D配列または数値を使用すると、元の行列ではなく、2D配列が作成されます。

以下のブロックダイアグラムのとおり、Forループで自動指標を使用し、行列からデータを抽出して2D配列で行列を再構成します。

自動使用が有効な状態の場合、Forループは行列を2D配列として処理します。VIのある場所で行列データタイプを入力として使用する必要がある場合、以下のブロックダイアグラムに示すとおり、「配列から行列に変換」関数を使用して2D配列を行列に変換します。

データを行列データタイプとして維持するには、自動指標を無効にしてシフトレジスタを使用します。たとえば、以下のブロックダイアグラムでは、シフトレジスタを使用して行列の2つの次元とデータタイプを管理しています。シフトレジスタは反復間で行列データタイプを渡します。

行列データタイプを受け入れる多くの多態性関数は、演算が配列ベースの演算の場合にも、行列データタイプを返します。ブロックダイアグラムの関数またはサブVIが行列データタイプを2次元配列に変換し、データフローで後続の演算が配列ベースの演算である場合は、配列への変換を行わせ、配列データを操作した後に、線形代数VIを使用する場合など、必要に応じて配列を「配列から行列に変換」関数で行列に変換します。

メモ  ブロックダイアグラムに行列データタイプを受け入れても2D配列を返すサブVIが含まれる場合は、デフォルトで行列データタイプを受け入れる多態性VIまたは関数に配列を配線する前に、結果として得られる配列を行列に変換して戻す必要はありません。データを行列として保持する必要がある場合は、「配列から行列に変換」関数を使用してデータを行列に変換して戻します。

行列の制御器、表示器、定数を作成する

デフォルトで、行列の制御器と表示器は、複数の要素を表示し、両方の次元のスクロールバーを表示します。行列制御器はタイプ定義のため、行列制御器のショートカットメニューは次元を追加および次元を削除オプションを含まず、タイプ定義オプションを含みます。ブロックダイアグラムで行列定数を作成するには、制御器パレットで行列制御器を選択してブロックダイアグラムに配置するか、任意の行列端子から定数を作成します。行列定数を使用すると、定数データを保存するか、または他の行列と比較する基準として保存できます。

ブロックダイアグラムでは、行列データタイプは、異なる配線パターンを持つ実数2D配列または複素2D配列のデータタイプのように見えます。行列データタイプを入力として配線する場合、行列データタイプを受け入れるVIおよび関数は、自動的に行列特有の演算をサポートします。

行列データタイプを入力として以下の関数の1つに配線すると、行列データタイプと動作するサブVIを含むVによって関数が置換されます。

結果のVIは同じアイコンで表示されますが、行列固有のアルゴリズムを含みます。この入力から行列の接続を解除しても、ノードはVIのままの状態で残ります。他のデータタイプを入力として配線して、元の関数を復元します。データタイプを関数に配線し、そのデータタイプによって基本的な数学演算に失敗する場合は、関数は空の行列またはNaNを返します。たとえば、2×3の次元を持つ行列を「和」関数の入力に配線すると、3×2行列が他の入力に配線された場合、関数は空の行列を返します。

行列を比較する

行列を比較するには、「等しい?」および「等しくない?」関数を使用します。これらの関数は行列入力に対して基礎群の比較モードで演算し、配列の比較と同じ規則に従います。

2つ以上の入力を受け入れる数値関数が、入力として行列および2次元配列を受け取ると、ほとんどの場合、関数は行列データタイプを返します。コネクタペーンに配線されている出力が2D配列でない場合、関数は配列演算を実行します。たとえば、実行列および実数2D配列を「商」関数に配線すると、デフォルトでこの関数は、関数の結果を含む実行列出力を返します。実行列および複素2D配列を配線すると、出力が複素数の要素を必要とするため、関数は複素2D配列を返します。2つ目のケースでは、実行列が配線された入力に強制ドットが表示されます。これは、関数が演算を行うために実行列を複素2D配列に変換することを示します。

行列のデフォルトサイズおよび値

行列のサイズは、特定の要素数に制限することはできません。ただし、行列制御器のデフォルト値を設定する際に、デフォルトサイズを設定することができます。

行列のデフォルトサイズは、必要以上に大きい値に設定しないでください。行列に大きいデフォルトサイズを設定する場合、行列の各要素のデフォルトデータはVIとともに保存され、このためディスク上のVIのサイズが大きくなります。

フロントパネルに新しく追加された行列制御器は、空の行列として表示されます。各次元は0になり、行列要素は淡色表示されます。フロントパネルの行列制御器には、デフォルト行列値(浮動小数点数または複素数)とデフォルトセル値の2つのデフォルト値があります。

デフォルト行列値は、他のすべてのフロントパネル制御器のデフォルト値と同様です。この値は、VIがロードされた時の行列の値となります。また、このデフォルト値は発呼者VIから値が渡されない場合のサブVIの行列の値として使用されます。

スカラデフォルト値は、行列が拡張された場合に行列のパディングに使用される値です。たとえば、行列指標を定義された大きさを上回る値に設定し、行列の定義された行を複数行越えた要素に値を入力すると、元の行列の終端と追加した要素の間にある要素はスカラデフォルト値に設定されます。

「行列」関数では、関数が無効な操作を行うと値が元の行列または2D配列の外側に表示されます。無効な操作のケースでは、LabVIEWが範囲外に返したり書き込む値は、元の行列または2D配列のデータおよび要素のタイプに依存します。無効な操作の値は、行列が拡張された場合に表示される0のデフォルト値とは異なります。



この記事は役に立ちましたか。

役に立たなかった