Main Content

.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 を使用します。

ジャグ配列が多次元の場合は、配列を個々の次元ごとに変換しなければなりません。

参考

|

関連するトピック