最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

C 行列 API

MATLAB® mxArray データ構造体と連携して動作する C/C++ プログラムの作成

R2017b 以前の MATLAB と連携して動作する C プログラムを記述するには、C 行列 API の関数を使用します。これらの関数は、mxArray データ構造体と連携して動作し、C MEX 関数または C エンジン アプリケーションのビルドに使用されます。

メモ

MathWorks では、可能な限り C アプリケーションよりも C++ アプリケーションを選択するよう推奨します。MATLAB から C++ ライブラリの機能を直接呼び出すための詳細については、C++ からの MATLAB の呼び出しまたはC++ ライブラリを参照してください。

C 行列 API には 2 つのバージョンがあります。

これらのライブラリ関数の使用例は、以下を参照してください。

注意

C 行列 API には、最新の C++ 機能をサポートするMATLAB データ APIとの互換性はありません。C 行列 API 関数はC++ MEX アプリケーションまたはC++ 用の MATLAB エンジン API内の関数と共に使用できません。

C データ型

mxArrayMATLAB 配列の C 型
mwSizeサイズ値の型
mwIndexインデックス値の型
mwSignedIndexサイズ値の符号付き整数型
mxChar文字列配列の型
mxLogicallogical 配列の型
mxComplexity配列に虚数部があるかどうかを指定するフラグ

mxArray の属性

mxIsNumeric配列が数値であるかどうかを判別
mxIsComplexデータが複素数であるかどうかを判別
mxGetNumberOfDimensions配列の次元数。
mxGetElementSize各データ要素を格納するのに必要なバイト数
mxGetDimensions次元配列へのポインター
mxSetDimensions次元数と各次元のサイズを変更
mxGetNumberOfElements数値配列内の要素数
mxCalcSingleSubscript最初の要素から目的の要素へのオフセット
mxGetM配列の行数
mxSetM配列の行数を設定
mxGetN配列の列数。
mxSetN配列の列数を設定
mxIsEmpty配列が空かどうかを判別
mxIsFromGlobalWS配列が MATLAB グローバル ワークスペースからコピーされたかどうかを判別

データ型の作成、クエリ、およびアクセス

すべて展開する

mxCreateDoubleMatrix2 次元倍精度浮動小数点配列
mxCreateDoubleScalar指定した値に初期化されるスカラーの倍精度配列
mxCreateNumericMatrix2 次元数値行列
mxCreateNumericArrayN 次元数値配列
mxCreateUninitNumericMatrix初期化されない 2 次元数値行列
mxCreateUninitNumericArray初期化されない N 次元数値配列
mxIsScalar配列がスカラー配列かどうかを判定
mxGetScalar配列内の最初のデータ要素の実数部
mxIsDoublemxArray が倍精度浮動小数点数としてデータを表しているかどうかを判別
mxGetDoublesmxDOUBLE_CLASS 配列内の実数データ要素
mxSetDoublesmxDOUBLE_CLASS 配列内に実数データ要素を設定
mxIsSingle配列が単精度浮動小数点数としてデータを表しているかどうかを判別
mxGetSinglesmxSINGLE_CLASS 配列内の実数データ要素
mxSetSinglesmxSINGLE_CLASS 配列内に実数データ要素を設定
mxGetPr(非推奨) mxDOUBLE_CLASS 配列内の実数データ要素
mxSetPr(非推奨) mxDOUBLE_CLASS 配列内に実数データ要素を設定
mxIsInt8配列がデータを符号付き 8 ビット整数として表すかどうかを判別
mxGetInt8smxINT8_CLASS 配列内の実数データ要素
mxSetInt8smxINT8_CLASS 配列内に実数データ要素を設定
mxIsUint8配列がデータを符号なし 8 ビット整数として表しているかどうかを判別
mxGetUint8smxUINT8_CLASS 配列内の実数データ要素
mxSetUint8smxUINT8_CLASS 配列内に実数データ要素を設定
mxIsInt16配列がデータを符号付き 16 ビット整数として表すかどうかを判別
mxGetInt16smxINT16_CLASS 配列内の実数データ要素
mxSetInt16smxINT16_CLASS 配列内に実数データ要素を設定
mxIsUint16配列がデータを符号なし 16 ビット整数として表しているかどうかを判別
mxGetUint16smxUINT16_CLASS 配列内の実数データ要素
mxSetUint16smxUINT16_CLASS 配列内に実数データ要素を設定
mxIsInt32配列がデータを符号付き 32 ビット整数として表すかどうかを判別
mxGetInt32smxINT32_CLASS 配列内の実数データ要素
mxSetInt32smxINT32_CLASS 配列内に実数データ要素を設定
mxIsUint32配列がデータを符号なし 32 ビット整数として表しているかどうかを判別
mxGetUint32smxUINT32_CLASS 配列内の実数データ要素
mxSetUint32smxUINT32_CLASS 配列内に実数データ要素を設定
mxIsInt64配列がデータを符号付き 64 ビット整数として表すかどうかを判別
mxGetInt64smxINT64_CLASS 配列内の実数データ要素
mxSetInt64smxINT64_CLASS 配列内にデータ要素を設定
mxIsUint64配列がデータを符号なし 64 ビット整数として表しているかどうかを判別
mxGetUint64smxUINT64_CLASS 配列内の実数データ要素
mxSetUint64smxUINT64_CLASS 配列内に実数データ要素を設定
mxGetComplexDoublesmxDOUBLE_CLASS 配列内の複素数データ要素
mxSetComplexDoublesmxDOUBLE_CLASS 配列内に複素数データ要素を設定
mxGetComplexSinglesmxSINGLE_CLASS 配列内の複素数データ要素
mxSetComplexSinglesmxSINGLE_CLASS 配列内に複素数データ要素を設定
mxGetImagData数値 mxArray 内の虚数データ要素
mxSetImagData数値 mxArray 内に虚数データ要素を設定
mxGetPi(非推奨) mxDOUBLE_CLASS 配列内の虚数データ要素
mxSetPi(非推奨) mxDOUBLE_CLASS 配列内に虚数データ要素を設定
mxGetComplexInt8smxINT8_CLASS 配列内の複素数データ要素
mxSetComplexInt8smxINT8_CLASS 配列内に複素数データ要素を設定
mxGetComplexUint8smxUINT8_CLASS 配列内の複素数データ要素
mxSetComplexUint8smxUINT8_CLASS 配列内に複素数データ要素を設定
mxGetComplexInt16smxINT16_CLASS 配列内の複素数データ要素
mxSetComplexInt16smxINT16_CLASS 配列内に複素数データ要素を設定
mxGetComplexUint16smxUINT16_CLASS 配列内の複素数データ要素
mxSetComplexUint16smxUINT16_CLASS 配列内に複素数データ要素を設定
mxGetComplexInt32smxINT32_CLASS 配列内の複素数データ要素
mxSetComplexInt32smxINT32_CLASS 配列内に複素数データ要素を設定
mxGetComplexUint32smxUINT32_CLASS 配列内の複素数データ要素
mxSetComplexUint32smxUINT32_CLASS 配列内に複素数データ要素を設定
mxGetComplexInt64smxINT64_CLASS 配列内の複素数データ要素
mxSetComplexInt64smxINT64_CLASS 配列内に複素数データ要素を設定
mxGetComplexUint64smxUINT64_CLASS 配列内の複素数データ要素
mxSetComplexUint64smxUINT64_CLASS 配列内に複素数データ要素を設定
mxGetPi(非推奨) mxDOUBLE_CLASS 配列内の虚数データ要素
mxSetPi(非推奨) mxDOUBLE_CLASS 配列内に虚数データ要素を設定
mxCreateSparse2 次元スパース配列
mxCreateSparseLogicalMatrix2 次元スパース logical 配列
mxIsSparse入力がスパース配列かどうかを判別
mxGetNzmax配列 IR、PR、および PI 内の要素数
mxSetNzmax非ゼロ要素のストレージ スペースの設定
mxGetIrスパース行列の配列 IR
mxSetIrスパース配列の配列 IR
mxGetJcスパース行列の配列 JC
mxSetJcスパース配列の配列 JC
mxGetData非数値 mxArray 内のデータ要素
mxSetData非数値 mxArray 内のデータ要素へのポインターを設定
mxCreateString指定値に初期化された 1 行 N 列配列
mxCreateCharMatrixFromStrings指定値に初期化された 2 次元の mxChar 配列
mxCreateCharArrayN 次元の mxChar 配列
mxIsChar入力が配列 mxChar かどうかを判定
mxGetChars文字配列データへのポインター
mxIsLogical配列が mxLogical 型であるかどうかを判別
mxIsLogicalScalarスカラー配列が mxLogical 型であるかどうかを判別
mxIsLogicalScalarTruemxLogical 型のスカラー配列が true であるかどうかを判別
mxClassID配列のクラスを識別する列挙値
mxCreateLogicalArrayN 次元 logical 配列
mxCreateLogicalMatrix2 次元 logical 配列
mxCreateLogicalScalarスカラーの logical 配列
mxGetLogicalslogical 配列データへのポインター
mxIsClass配列が特定のクラスのオブジェクトであるかどうかを判別
mxGetClassID配列のクラス
mxGetClassName文字列としての配列のクラス
mxSetClassName構造体配列の MATLAB オブジェクト配列への変換
mxGetPropertyMATLAB オブジェクトのパブリック プロパティの値
mxSetPropertyMATLAB オブジェクトのパブリック プロパティの値を設定
mxCreateStructMatrix2 次元構造体配列
mxCreateStructArrayN 次元構造体配列
mxIsStruct入力が構造体配列かどうかを判別
mxGetField構造体配列からフィールド値へのポインター (インデックスおよびフィールド名を指定)
mxSetFieldインデックスおよびフィールド名を指定して、構造体配列にフィールド値を設定
mxGetNumberOfFields構造体配列のフィールド数。
mxGetFieldNameByNumber構造体配列からフィールド名へのポインター (フィールド番号を指定)
mxGetFieldNumber構造体配列内のフィールド番号 (フィールド名を指定)
mxGetFieldByNumber構造体配列からフィールド値へのポインター (インデックスおよびフィールド番号を指定)
mxSetFieldByNumberインデックスおよびフィールド番号を指定して、構造体配列にフィールド値を設定
mxAddField構造体配列へのフィールド追加
mxRemoveField構造体配列からのフィールドの削除
mxCreateCellMatrix2 次元 cell 配列
mxCreateCellArrayN 次元 cell 配列
mxIsCell入力が cell 配列かどうかを判別
mxGetCellcell 配列の要素へのポインター
mxSetCellcell 配列の内容を設定

mxArray の削除と複製

mxDestroyArray関数 MXCREATE* によって割り当てられた動的メモリを解放
mxDuplicateArray配列のディープ コピーを作成

mxArray の変換

すべて展開する

mxMakeArrayComplex実数データを保持したまま、実数 mxArray を複素数に変換する
mxMakeArrayReal実数データを保持したまま、複素数 mxArray を実数に変換する
mxArrayToString配列から文字列
mxArrayToUTF8String配列から UTF-8 文字列へのエンコード
mxGetStringmxChar 配列から C スタイル文字列または Fortran character の配列へ
mxSetClassName構造体配列の MATLAB オブジェクト配列への変換

データ メモリの管理

mxCallocMATLAB メモリ マネージャーを使用して配列の動的メモリを割り当て、0 に初期化
mxMallocMATLAB メモリ マネージャーを使用して、初期化されていない動的メモリを割り当てる
mxReallocMATLAB メモリ マネージャーを使用した動的メモリの再割り当て
mxFree関数 mxCalloc、mxMalloc、mxRealloc、mxArrayToString または mxArrayToUTF8String によって割り当てられた動的メモリの解放

アサート

mxAssertデバッグ目的のためのアサーション値の確認
mxAssertSアサーション テキストを出力せずにアサーション値をチェック

定数

mxIsInf入力が無限であるかどうかを判別
mxIsFinite入力が有限かどうかを判別
mxIsNaN入力が NaN (Not-a-Number) であるかどうかを判別

トピック

C MEX ファイルでの文字列の受け渡し

この例では、C 行列 API でビルドされた MEX 関数に文字列を渡す方法を説明します。

C MEX ファイルでのスカラー値の受け渡し

この例では、スカラー値を渡す MEX ファイルを作成する方法を説明します。

C MEX ファイルでのスパース配列の処理

この例では、C 行列 API を使用してスパース行列に入力する方法を説明します。

C MEX ファイルにおける 8 ビット、16 ビット、32 ビット、および 64 ビット データの処理

この例では、C 行列 API で符号なしの 16 ビット整数を MEX ファイルで使用する方法を説明します。

C MEX ファイルでの構造体と cell 配列の受け渡し

この例では、C 行列 API でビルドされた MEX ファイルに構造体と cell 配列を渡す方法を説明します。

C MEX ファイルでの多次元数値配列の操作

mxGetDoublesmxGetComplexDoubles などの型付きデータ アクセス関数を使用して、多次元数値配列を操作できます。