TECHNICAL KNOWLEDGEBASE
【Basic Edition】
2023-06-16
SnippetとモジュールにてMATLABの機能を活用
関連チュートリアル: | Tutorial.507 |
必須ツールボックス: | VirtualLab™ 5.5以降 –Starter Toolbox |
License: | CC-BY-SA 3.0 |
はじめに
- 本書は、VirtualLab™のSnippetとモジュールを用いて、MATLAB® の機能を活用する方法を解説するものです
- この機能は、MATLAB®を用いて、プログラマブル素子に対する入射フィールドを回転させるデモンストレーションを用いて解説します
- 技術的ヒントや、VirtualLab™におけるプログラミングの、より一般的な情報は、構築ブロック、素子、ディテクターのプログラマブルをご参照下さい
MATLABのモジュール
- MATLABの機能を、MATLAB .m-file内にて定義する事が可能です
- これらの機能は、MATLAB codeの入力にて活用されます
- この例では、機能 rot にてインプット
matrix A を回転し、回転された
matrix B に戻る定義を用います
MATLABによる.NET DLLの構築
- MATLAB は、 *.m ファイルを編成し、.NET DLLを構築する機能があります
- .NET編成は、MATLAB のコマンド “deploytool”にてトリガーされます
- 本書では、MATLAB compilerの詳細説明は行いません。
- 編成の結果VirtualLabで活用可能な .NET DLLとなります
Light Path Diagramのサンプル
プログラマブル素子の編集ダイアログ
ソースコード・エディター
ソースコードについて
- 入射フィールドの各メンバー(ハーモニックフィールド・セット)を MATLABにて回転させます
- MATLAB とコミュニケートするために、MCR (MATLAB Compiler Runtime) にて定義されたデータタイプをVirtualLabフィールドデータから作成する必要があります
ソースコードの説明
- 一般的な MATLAB データタイプは:
‒ MathWorks.MATLAB.NET.Arrays.MWArray;
‒ MathWorks.MATLAB.NET.Arrays.MWNumericArray; - 詳細情報は、MCRのヘルプをご参照下さい
- MATLABでのアクション:
構築された .NET DLL内に .NETclassを作成する必要があります。 Classの名前は MATLAB (mtxOperation)の開発ツールにて設定します。 - .NETclassの作成された事例は、オリジナルの mfile (rot)内にて定義された機能を呼び出す事が可能です
- 回転機能を呼び出した後、MATLABデータは、VirtualLabデータタイプに再変換する必要があります
- 最後に、作成されたフィールドデータを戻された値のハーモニックフィールドセットに追加します
外部リファレンス
- ユーザーは、下記の外部リファレンスにて、Snippetの整合性を確保します:
‒ MATLAB–DLL (MATLABの開発ツールにて作成) (matrixOperation.dll)
‒ MCR–DLL はMATLABとコミュニケートに必要なデータタイプを含みます
追加使用法
- ユーザーは、MATLAB DLLのnamespaceを設定する必要があります(この場合は matrixoperation)
- さらに、MCR DLLのnamespacesも設定する必要があります (上図参照)
外部DLLの活用と権限
外部DLLの活用時は、下記のWindowsのユーザー権限があります:
- 実行にあたり、“DLLCache”フォルダーが作られ、操作されます。
フォルダーは、VirtualLabをインストールしたディレクトリーに作成されます。 - VirtualLabがシステムドライブ(通常 C:)にインストールされている場合
アドミニストレータである必要があります。 VirtualLabを起動する際に“Run as Administrator”とする必要があります。 - VirtualLabを他のドライブ(C: 以外)にインストールされた場合
通常のユーザー権限で可能です
伝播の結果
左:光源により発生したフィールド / 右:MATLABを用いたプログラマブル素子により回転されたフィールド
MATLAB Compiler Runtimeについて
- MCR (MATLAB Compiler Runtime) はMATLABサーバーより無償でダウンロード可能です:
http://www.mathworks.de/products/compiler/mcr/index.html - 正しいMCRをインストールする事は重要です。 必要なMCRのバージョンはMATLAB DLLをコンパイルするために活用するMATLABのバージョンとマッチしている必要があります。
- 本例では MCRのバージョン7.16が必要です
- 重要: MATLAB codeを.NET DLLにコンパイルするには、MATLABのライセンスが必要です。 MATLABにて構築された.NET DLLの活用は無償で可能です(正しいバージョンのMCRのインストールは必要です)。
MATLAB - MCRバージョンのまとめ
まとめ
- VirtualLab はSnippetとモジュール内の .NET DLLをサポートしております
- VirtualLabにおける光学系のシミュレーションにMATLAB code、コンパイルされた .NET DLLの活用が可能です
- プログラマブル素子と、MATLAB codeの活用オプションにより、ユーザー定義された光学モデリングが可能です