MWArray API によるデータ マーシャリング
マネージ .NET 型と MATLAB® 型の間のデータ変換をサポートするために、MATLAB Compiler SDK™ には抽象クラス MWArray
から派生した一連のデータ変換クラスが用意されています。これらのクラスでは、明示的なデータ変換を使用せずに、.NET のほとんどのネイティブの値の型をパラメーターとして直接渡すことができます。マネージ アプリケーションで MWArray
アセンブリを参照して、ネイティブの配列を MATLAB 配列に変換するか、その逆の変換を行います。このプロセスを "データ マーシャリング" と呼びます。
コンポーネントでメソッドを呼び出すときの入力パラメーターと出力パラメーターは MWArray
の派生型です。パラメーターを渡すには、MWArray
サブクラスのいずれかを明示的にインスタンス化するか、多くの場合はパラメーターを "マネージ データ型" として渡して MATLAB Compiler SDK の暗黙的なデータ変換機能を利用できます。
各種のネイティブのデータ型と MATLAB と互換性がある型の間での手動のデータ変換のガイドラインを示す例については、.NET と MATLAB の間でのデータの変換を参照してください。
MWArray データ変換クラス
MWArray
データ変換クラスは、主要な MATLAB 配列型を表すクラス階層として構築されます。
MWArray
MWIndexArray
MWCellArray
MWCharacterArray
MWLogicalArray
MWNumericArray
MWStructArray
階層のルートは MWArray
抽象クラスです。MWIndexArray
も抽象クラスです。そのほかに、主要な MATLAB 配列型を表すサブクラスとして、MWNumericArray
、MWLogicalArray
、MWCharArray
、MWCellArray
、MWStructArray
があります。
MWArray
とその派生クラスには次の機能があります。
コンストラクターとデストラクターによる MATLAB 配列のインスタンス化と破棄
プロパティによる基となる配列データの取得と設定
インデクサーによる MATLAB 配列インデックスのサブセットのサポート
明示的および暗黙的なデータ変換演算子
一般的なメソッド
これらのデータ変換クラスの詳細については、"MWArray クラス ライブラリのリファレンス" を参照してください。これは、
フォルダーにも用意されています。ここで、matlabroot
\help\dotnetbuilder\MWArrayAPImatlabroot
は MATLAB インストール フォルダーを表します。
.NET コードから MATLAB へのデータの引き渡し
ほとんどの場合、C# プログラムで .NET のネイティブのプリミティブ型または配列を入力パラメーターとして使用すると、生成されたメソッドに渡す前に MATLAB Compiler SDK で自動的かつ透過的に適切な MWArray
クラスのインスタンスに変換されます。MATLAB Compiler SDK は、CLS 準拠のほとんどの string、数値型、またはそれらの型の多次元配列を適切な MWArray
型に変換します。サポートされていない型の一覧については、サポートされていない MATLAB 配列型を参照してください。この変換は C# アプリケーションでは透過的ですが、他の言語では明示的なキャスト演算子が必要になる場合があります。たとえば、Visual Basic® では op_implicit
が必要です。
たとえば、次の .NET ステートメントについて考えます。
result = theFourier.plotfft(3, data, interval);
このステートメントでは、引数 interval
は .NET ネイティブ型の System.Double
です。MATLAB Compiler SDK は、この引数を MATLAB の 1 行 1 列の double MWNumericArray
型に変換します。これは、MATLAB double 配列を格納するラッパー クラスです。
MATLAB から .NET コードへのデータの引き渡し
MATLAB 関数から .NET メソッドに返されるすべてのデータは、適切な MWArray
サブクラスのインスタンスとして表されます。たとえば、MATLAB cell 配列は MWCellArray
オブジェクトとして返されます。
返されるデータはネイティブの配列に自動的に変換 "されません"。対応するネイティブの配列型を取得する必要がある場合は ToArray
メソッドを呼び出します。これにより、いくつかの例外を除き、MATLAB 配列が適切なネイティブのデータ型に変換されます。cell 配列、構造体配列、および複素数の配列は、ネイティブの .NET 型として使用できません。これらのデータ型を表すには、MWCellArray
、MWStructArray
、または MWNumericArray
のインスタンスをそれぞれ作成する必要があります。
.NET ネイティブ データ型とそれに対応する MATLAB のデータ型の一覧については、.NET と MATLAB の間のデータ変換のルールを参照してください。