サンプルコードとドキュメント

LabVIEWのMathScriptノードからMATLABスクリプトノードへの移行 – ベンチマークサンプル

Products and Environment

This section reflects the products and operating system used to create the example.

To download NI software, including the products shown below, visit ni.com/downloads.

    Software

  • LabVIEW

    Other

  • LabVIEW 2018 MathScriptモジュール (32ビット) 以降、MATLAB 2018a以降

Code and Documents

Attachment

説明

Windowsコンピュータ用のLabVIEW MathScriptノードの代替として、LabVIEW MATLABスクリプトノードを推奨します。MATLABスクリプトノードは、データ解析、カーブフィット、スペクトル解析、信号処理、統計、および機械学習を含む、さまざまなタスクに使用できます。グラフィカルなLabVIEWコードをMATLABスクリプトノードと組み合わせて、システムプログラミング、自動化、I/Oに使用できます。

このドキュメントでは、MATLABスクリプトノードとLabVIEWMathScriptノードの相違点、MathScriptノードから移行する場合のデスクトップとリアルタイムの両方のオプション、およびいくつかの計算タスクのサンプルベンチマークVIについて説明します。サンプルVIは、このドキュメントに添付されているzipファイルで提供されています。

 

MATLABスクリプトノードとMathScriptノードの重要な違い

添付されたサンプルベンチマークVIには、MATLABスクリプトノードとMathScriptノードの両方が含まれています。以下の表は、ノード間のいくつかの重要な違いを示しています。MATLABスクリプトノードは、ActiveXが同じマシンにインストールされているMATLABソフトウェアを呼び出してスクリプトを実行します。LabVIEWMATLABスクリプトノードを使用するには、WindowsコンピュータにLabVIEWMATLABの両方のライセンスコピーが必要です。このアプローチにはいくつかの利点があります。MATLABライセンスに含まれるすべてのツールボックス、オブジェクト、およびデータタイプに完全にアクセスできます。また、MATLABとの完全な構文および数値互換性があります。

MATLABスクリプトノードとMathScriptノードの重要な違い

 

MATLABを使用したIDE-IDE通信方法またはコンパイルされたMATLABコードへの移行オプション

以下の決定木は、MathScriptノードから、MATLABを使用したIDE-IDE通信方法、またはMathWorksコードコンパイルソフトウェアで開発されたコンパイル済みコードオプションに移行する場合の追加オプションを示しています。最初にアプリケーションを確認し、デスクトップアプリケーションであるか、またはリアルタイムターゲットでMathScriptを活用しているかも判断する必要があります。デスクトップアプリケーションの場合は、LabVIEWMathScriptノードからMATLABスクリプトノードに移行するか、LabVIEW NXGおよびMATLAB用インタフェースに切り替えることができます。LabVIEW NXGを検討している場合は、アプリケーションの残りの部分も同様に移行可能で、ハードウェアが完全にサポートされていることを確認してください。

 

決定木には、LabVIEW Real-TimeアプリケーションとMac/Linuxデスクトップコンピュータのオプションも記載されています。LabVIEW Real-Timeアプリケーションでは、MathScriptノードの代替として、コンパイルされたMATLABコードと組み合わせたModel Interfaceツールキットを検討する必要があります。用意したスクリプトをSimulinkダイアグラムのMATLAB Functionブロック内に配置できます。Simulinkモデルは、主に1つ以上のMATLAB Functionブロックと入出力ポートで構成できます。Simulinkモデルに連続時間コンポーネントが含まれていない場合、連続時間ソルバーを選択する代わりに、リアルタイムアプリケーションに固定ステップの離散ソルバーを選択できます。「Running Compiled Simulink® Models in LabVIEW and in VeriStand」ドキュメントには、Simulinkダイアグラム内にMATLAB Functionブロックを含むサンプルがあります。

 

リアルタイムアプリケーションを使用し、SimulinkおよびSimulink Coderにアクセスがない場合は、コンパイルされたMATLABコードとともにLabVIEW Real-Timeのライブラリ関数呼び出しノードを使用できます。

 

MacまたはLinuxデスクトップコンピュータでは、MATLABのライセンスコピーとのIDE-IDE通信用に「システム実行」VIを使用するか、コンパイルされたMATLABコードでライブラリ関数呼び出しノードを使用するかを選択できます。

 

 MATLABスクリプトノードおよびMathScriptノード用のサンプルベンチマークVI

このドキュメントには3つのVIが添付されており、MATLABスクリプトノードおよびMathScriptノード用のサンプルベンチマークとグラフィカルなLabVIEWコードが含まれています。それぞれのアプローチはケースストラクチャ内に個別のケースとして存在します。3つのVIには次のタスクが含まれています。

  • 入力配列の高速フーリエ変換 (FFT)
  • 入力行列のlower upper (LU) 因子分解
  • サンプルスクリプト (secondord.m) で指定された常微分方程式 (ODE) の数値解

これらのサンプルVIは計算を数回実行し、平均計算時間を計算します。除外するウォームアップ計算数とともに、実行する計算数を指定できます。ウォームアップ計算を除外するオプションは、MATLABスクリプトノードのMATLABとの通信の開始を考慮して作成されました。

 

FFTおよびLUの両方のサンプルベンチマークVIは、各メソッドでそれぞれ同じ入力配列と行列を使用します。ODEサンプルベンチマークVIは、各メソッドで同じ微分方程式と初期条件を使用します。

 

根本的な計算エンジンは、MATLABスクリプトノードとMathScriptノードで異なりますが、各メソッドの設定は、同様の数値結果を提供するように選択されます。ODEベンチマークに関する注意点の1つは、MATLABスクリプトノードでは、ユーザが可変ステップソルバーの最小ステップ時間を選択できないことです。MATLABソリューションのポイント数を確認すると、MathScriptと比較して、それぞれが121112とわずかに高いポイント数になりましたが、MATLABソリューションを計算する平均時間はMathScriptよりも短いままです。

 

以下の表は、Windowsコンピュータで3つのVIを実行した結果を示しています。各VIで選択された実行数は20で、各メソッドの平均計算時間から除外されるウォームアップ実行数は2です。MATLABスクリプトノードは、LUタスクとODEタスクの両方でMathScriptノードよりも速くなります。FFTタスクの場合は遅くなります。

Windowsベンチマークの結果表、2回のウォームアップ実行を除外した20回の実行

(Intel Core i7-7600U CPU @ 2.80GHz)

 

サンプルベンチマークVIを独自のコードと適切な入力で変更して、アプリケーションのカスタムベンチマークを計算できます。

 

各ノードまたはグラフィカルコードからの出力が、サンプルベンチマークVIに含まれていませんでした。ケースのコードを新しいVIにコピーして、出力の確認と比較を実行できます。ODE計算の応答プロットは、このドキュメントに添付されている別のzipファイルの追加サンプルに含まれています。

 

VIおよびsecondord.mスクリプトのスクリーンショットを以下に示します。

FFTサンプルベンチマークのスクリーンショット

LUサンプルベンチマークのスクリーンショット

ODEサンプルベンチマークのスクリーンショット

Secondord.m:

function dydt = secondord(t, y);

dydt = [y(2); -2*y(1) - y(2)];

 

 

 

 

使用方法

サンプルをインストールし、MATLABでパスを設定する:

 

次の3つのサンプルベンチマークVIとサポートスクリプトを (Example Benchmarks for MATLAB Script and MathScript zipファイルから) Windowsコンピュータのドキュメント→LabVIEW Dataフォルダに配置します。

  • Benchmarking FFT VI
  • Benchmarking LU VI
  • Benchmarking ODE VI
  • secondord.m

 また、同じマシン上のMATLAB環境にLabVIEW Dataフォルダのパスを追加してください。

 

サンプルベンチマークVIを実行する:

各サンプルベンチマークVIを実行して、結果を観察できます。必要に応じて、実行数とウォームアップ実行数を変更して、各計算の平均時間から除外できます。

 

 

関連リンク

 

Carli S.
Troubleshooting & Maintenance Digital Business Manager - National Instruments

Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.

Contributors