TECHNICAL KNOWLEDGEBASE

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の活用オプションにより、ユーザー定義された光学モデリングが可能です

ダウンロードファイル

ファイルをダウンロード(9.27MB)