メインコンテンツ

C++ 関数への clib.array の引き渡し

MATLAB® は、C++ ネイティブ配列と MATLAB オブジェクトの std::vector 型をラップする clib.array インターフェイスを提供します。用語 "clib 配列" は、これらの C++ 型の MATLAB オブジェクト表現を指します。

MATLAB の clib 配列は、対応する C++ ネイティブ配列または std::vector 型が、サポートされる C++ の構成要素 (関数の入力引数、出力引数およびデータ メンバー) によって使用される場合にのみ定義されます。ライブラリ ヘッダー ファイルには、配列要素型の定義が含まれている必要があります。構成要素は MATLAB によってサポートされている必要があり、C++ ライブラリへの MATLAB インターフェイスをビルドするときに組み込まれる必要があります。

C++ オブジェクトの MATLAB 配列の作成または MATLAB 配列から C++ 配列オブジェクトへの変換の詳細については、Create MATLAB Array of C++ Objectsを参照してください。

MATLAB の C++ オブジェクト配列のプロパティ

clibArray または clibConvertArray で作成した MATLAB 配列には以下のプロパティがあります。

プロパティ

アクセス

説明

Dimensions

double ベクトル読み取り専用

C++ 配列の次元。たとえば、[2 5 3] は 2×5×3 の配列を指定します。

Resizable

logical スカラー読み取り専用

  • true — 要素を追加または削除できます。

  • false — 要素を追加または削除することはできません。

MATLAB の C++ オブジェクト配列のメソッド

clibArray または clibConvertArray で作成した MATLAB 配列には以下のメソッドがあります。

メソッド

構文

説明

append

append([element])

オプションで指定された要素を配列の最後に追加します。

プリミティブ型の MATLAB clib 配列の場合、入力引数を指定しないと、メソッドはゼロ値を追加します。

クラス型の MATLAB clib 配列の場合、入力引数を指定しないと、メソッドはクラス型の既定のコンストラクターによって作成されたオブジェクトを追加します。クラス型の既定のコンストラクターが削除された場合、ランタイム エラーが発生します。

removeLast

removeLast

配列の最後の要素を削除します。MATLAB の clib 配列が空の場合、ランタイム エラーが発生します。

double

double

倍精度に変換します。

int8

int8

int8 に変換します。

uint8

uint8

uint8 に変換します。

int16

int16

int16 に変換します。

uint16

uint16

uint16 に変換します。

int32

int32

int32 に変換します。

uint32

uint32

uint32 に変換します。

int64

int64

int64 に変換します。

uint64

uint64

uint64 に変換します。

logical

logical

logical に変換します。

struct (R2024b 以降)

struct

構造体に変換します。

メモリ管理

clibArray または clibConvertArray で作成された MATLAB 配列のメモリは MATLAB が管理します。自分で clib 配列のメモリを明示的に解放する必要はありません。C++ オブジェクトのメモリを MATLAB から解放する方法の詳細については、clibRelease を参照してください。

参考

|

トピック