Main Content

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 配列型を表すサブクラスとして、MWNumericArrayMWLogicalArrayMWCharArrayMWCellArrayMWStructArray があります。

MWArray とその派生クラスには次の機能があります。

  • コンストラクターとデストラクターによる MATLAB 配列のインスタンス化と破棄

  • プロパティによる基となる配列データの取得と設定

  • インデクサーによる MATLAB 配列インデックスのサブセットのサポート

  • 明示的および暗黙的なデータ変換演算子

  • 一般的なメソッド

これらのデータ変換クラスの詳細については、"MWArray クラス ライブラリのリファレンス" を参照してください。これは、matlabroot\help\dotnetbuilder\MWArrayAPI フォルダーにも用意されています。ここで、matlabroot は 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 型として使用できません。これらのデータ型を表すには、MWCellArrayMWStructArray、または MWNumericArray のインスタンスをそれぞれ作成する必要があります。

.NET ネイティブ データ型とそれに対応する MATLAB のデータ型の一覧については、.NET と MATLAB の間のデータ変換のルールを参照してください。

関連するトピック