このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
C++ 配列用の MATLAB オブジェクト
MATLAB® は、C++ ネイティブ配列および std::vector
型をラップするインターフェイス clib.array
を提供しています。用語 "clib 配列" は、これらの C++ 型の MATLAB 表現を指します。
MATLAB の clib 配列は、対応する C++ ネイティブ配列または std::vector
が、サポートされる C++ の構成要素 (関数の入力引数、出力引数およびデータ メンバー) によって使用される場合にのみ定義されます。指定されるヘッダーは、要素の型の定義を含まなければなりません。構成要素は、MATLAB でサポートされている必要があり、インターフェイスのビルド時に除外されてはなりません。
C++ オブジェクトの MATLAB 配列の作成
C++ ネイティブ配列または std::vector
型を表す MATLAB オブジェクトを作成するには、関数 MATLABclibArray
を呼び出します。たとえば、ライブラリ libname
がクラス myclass
を定義しているとします。MATLAB で、このクラスを clib.libname.myclass
として参照します。5 つの myclass
オブジェクトからなる配列を作成するには、次の構文を使用します。
myclassArray = clibArray('clib.libname.myclass',5);
MATLAB 配列 myclassArray
の型は clib.array.libname.myclass
です。myclassArray
の要素にアクセスするには、MATLAB インデックスを使用します。たとえば、最初の要素にアクセスするには、次の構文を使用します。
e = myclassArray(1)
要素の型は clib.libname.myclass
です。
あるいは、要素の型が基本型、規定のコンストラクターを持つユーザー定義クラス、あるいは標準 string 型の場合、clib.array
コンストラクターを呼び出します。
ユーザー定義クラスについて 5 つの要素からなる配列を作成するには、次のように入力します。
myclassArray = clib.array.libname.myclass(5)
基本型から配列を作成するには、要素の型を知っていなければなりません。詳細については、ベクトル整数型およびC++ から MATLAB へのデータ型のマッピングの浮動小数点型の表を参照してください。たとえば、C++ の型が std::vector<int32_t>
である場合、MATLAB 要素の型は clib.libname.Int
です。5 つの要素をもつ配列を作成するには次のように入力します。
myIntArray = clib.array.libname.Int(5)
標準 string 型から配列を作成するため、std::vector<T> string 型の表を参照して要素の型の情報を調べます。たとえば、C++ の型が std::vector<std::string>
である場合、MATLAB 要素の型は clib.libname.std.String
です。5 つの要素をもつ配列を作成するには次のように入力します。
myStringArray = clib.array.libname.std.String(5)
メモ
C++ オブジェクトを MAT ファイルに保存することはサポートされていません。
メモ
大かっこを使用して C++ オブジェクトの配列を作成することはできません。
MATLAB 配列から C++ 配列オブジェクトへの変換
既存の MATLAB 配列を C++ 配列オブジェクトとして使用できます。関数 clibConvertArray
を呼び出します。
MATLAB の C++ オブジェクト配列のプロパティ
clibArray
または clibConvertArray
で作成した MATLAB 配列には以下のプロパティがあります。
プロパティ | 型 | アクセス | 説明 |
---|---|---|---|
| double vector | 読み取り専用 | C++ 配列の次元数 |
| logical scalar | 読み取り専用 |
|
MATLAB の C++ オブジェクト配列のメソッド
clibArray
または clibConvertArray
で作成した MATLAB 配列には以下のメソッドがあります。
メソッド | シグネチャ | 説明 |
---|---|---|
| append([element]) | オプションで指定された要素を配列の最後に追加します。 プリミティブ型の MATLAB の clib 配列の場合、入力引数がなければゼロ値が追加されます。 クラス型の MATLAB の clib 配列の場合、入力引数がなければクラス型の既定のコンストラクターが追加されます。クラス型の既定のコンストラクターが削除された場合、ランタイム エラーが発生します。 |
| removeLast | 配列の最後の要素を削除します。MATLAB の clib 配列が空の場合、ランタイム エラーが発生します。 |
| double | 倍精度に変換します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| logical | 数値を logical に変換します。 |
基本型の C++ ネイティブ配列を MATLAB 基本型として取り扱う
既定の設定では、MATLAB は基本型の C++ ネイティブ配列を MATLAB clib.array
型を使用して表します。基本の MATLAB 配列型を出力で保持する必要がある場合は、ReturnCArrays
引数を false
に設定してインターフェイスをビルドします。詳細については、clibgen.generateLibraryDefinition
を参照してください。
メモリ管理
clibArray
または clibConvertArray
で作成された MATLAB 配列のメモリは MATLAB が所有します。このメモリを解放するには、clibRelease
を呼び出します。
参考
clibArray
| clibConvertArray
| clibRelease