.NET アプリケーションによる配列の使用
.NET への MATLAB 配列の受け渡し
MATLAB プリミティブ型の変換表の説明にあるように、MATLAB® は配列を .NET 型に自動的に変換します。複数の文字配列から成る配列を渡すには、cell 配列を作成します。他のすべての型には、MATLAB 関数 NET.createArray
を使用します。
MATLAB は .NET 配列を作成し、MATLAB 配列から .NET 配列に要素をコピーして、それを C# に渡します。
MATLAB 配列へのプリミティブ .NET 型配列の変換
.NET 配列を MATLAB で使用するには、プリミティブ .NET 型の配列を MATLAB 型に変換で示したように、適切な MATLAB 変換関数を呼び出します。たとえば、.NET メソッドが System.Int32[]
型の netArr
を返すと仮定します。
netArr = Int32[] with properties: Length: 5 LongLength: 5 Rank: 1 SyncRoot: [1×1 System.Int32[]] IsReadOnly: 0 IsFixedSize: 1 IsSynchronized: 0
配列を int32
の MATLAB 配列に変換します。
B = int32(netArr)
B = 1×5 int32 row vector 1 2 3 4 5
B
の要素を MATLAB 配列と組み合わせます。
A = int32([11 12 13 14 15]); A + B
ans = 1×5 int32 row vector 12 14 16 18 20
MATLAB における .NET 配列要素へのアクセス
MATLAB 配列と同様に、添字を使用して .NET 配列の要素にアクセスします。
配列インデックス付けに説明されているように、多次元 .NET 配列の要素は、MATLAB で行うように 1 つの添字 (線形インデックス付け) によって参照することはできません。.NET 配列の次元ごとにインデックスを指定しなければなりません。
.NET 配列の要素へのアクセスには、スカラー インデックスのみが使用可能です。行列の作成、連結、および拡張で説明されているように、コロン演算子はサポートされていません。
インスタンス関数 Get および Set の使用
別の方法として、インスタンス関数 Set
および Get
を使用して .NET 配列の要素にアクセスできます。Set
または Get
を使用するときは、0 ベースの C# 配列インデックス付けを使用しなければなりません。
たとえば、関数 Set
と直接代入を使用して、2 つの配列 System.String
を作成します。
d1 = NET.createArray('System.String',3); d1.Set(0, 'one'); d1.Set(1, 'two'); d1.Set(2, 'three'); d2 = NET.createArray('System.String',3); d2(1) = 'one'; d2(2) = 'two'; d2(3) = 'zero';
各配列の最初の要素の値を比較するには、以下を入力します。
System.String.Compare(d1(1),d2.Get(0))
MATLAB には 0
と表示されます。これは文字列が等しいことを意味します。
.NET ジャグ配列の MATLAB 配列への変換
.NET ジャグ配列は、MATLAB コマンドで使用する前に変換しておかなければなりません。
配列の形状が四角形の場合、対応する MATLAB の数値関数を使用します。
配列の形状が四角形ではない場合、関数
cell
を使用します。
ジャグ配列が多次元の場合は、配列を個々の次元ごとに変換しなければなりません。