ドキュメンテーション

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

C/C++ ソース ファイル

MATLAB® API ライブラリを使用した C/C++ 関数の記述

MEX ファイルを使用すると、MATLAB から C 関数を呼び出すことができます。C/C++ MEX ファイルを作成するには、以下が必要です。

Fortran MEX ファイル記述の詳細は、Fortran ソース ファイルを参照してください。

loadlibrary および calllib コマンドを使用して関数を共有ライブラリで呼び出す方法の詳細は、C 共有ライブラリの呼び出しを参照してください。

C または C++ コードを使用した S-Function の記述については、Simulink® ドキュメンテーションを参照してください。

MEX ファイルは、すべてのアプリケーションに適しているわけではありません。MATLAB は、C、C++ などのコンパイル型言語による時間のかかる低水準プログラミングの排除を専門とする、生産性の高い環境です。通常、プログラミングは MATLAB で行ってください。アプリケーションで必要な場合を除き、MEX ファイルは使用しないでください。

例および操作のヒント

C ソース MEX ファイルの作成

この例では、MATLAB で MATLAB 行列を使用して C 関数 arrayProduct を呼び出す MEX ファイルの作成方法を説明します。

MEX ファイルのソース コード ファイルの表

以下の表に示した MEX サンプルのソース コードは、matlabroot/extern/examples のサブフォルダーにあります。

mxArray を埋める

行列ライブラリを使用して、C/C++ プログラムからのデータを mxArray に移すことができます。

構造体とセル配列の受け渡し

構造体とセル配列の MEX ファイルへの受け渡しは、そのデータ自体が mxArray 型であること以外、他のデータ型を渡す場合と同様です。

2 次元セル配列の作成

この例では、入力引数をセル配列に配置する関数 mxcreatecellmatrix.c を使用して、MEX ファイル内にセル配列を作成する方法を説明します。

ユーザーへの入力要求

MATLAB は stdin および stdout を使用しないため、ユーザーへの入力要求に scanfprintf のような C/C++ 関数は使用しません。

8 ビット、16 ビットおよび 32 ビット データの処理

MATLAB API には、符号付きおよび符号なしの 8 ビット、16 ビット、32 ビットのデータをサポートする一連の関数が用意されています。

MEX ファイルでの C++ クラス

この mexcpp.cpp の例では、C 言語 MEX ファイルで C++ コードを使用する方法を説明します。

C++ でのファイルの処理

mexatexit.cpp の例で、C++ でのファイルの処理機能について説明します。

LAPACK と BLAS 関数の呼び出し

MEX ファイルを使用して、LAPACK または BLAS の関数を呼び出すことができます。

MEX ファイルでのヘルプ ファイルの使用

コメント行を含む MATLAB スクリプトを作成することで、MEX ファイルの動作を記録することができます。

ユーザー メッセージ

MATLAB コマンド ウィンドウにテキストを出力するには、関数 mexPrintf を使用します。

エラー処理

関数 mexErrMsgIdAndTxt はエラー情報を出力し、バイナリ MEX ファイルを終了します。

最派生クラスのテスト

以下の入力を必要とする関数を定義する場合、

64 ビット API を使用するための MEX ファイルのアップグレード

MATLAB Version 7.3 (R2006b) では 64 ビット インデックス付けのサポートが追加されました。

グラフィックス オブジェクトを使用するための MEX ファイルのアップグレード

MATLAB Version 8.4 (R2014b) では、グラフィックス オブジェクトのハンドルのデータ型が double から "オブジェクト" に変わります。

概念

MEX ファイルの概要

MATLAB コマンド ラインからユーザー独自の C、C++ または Fortran サブルーチンを組み込み関数のように呼び出すことができます。

MEX ファイルのコンポーネント

"ゲートウェイ ルーチン" は、MEX ファイルへのエントリ ポイントです。

MATLAB API ライブラリ

ゲートウェイおよび計算ルーチンで行列ライブラリ関数と MEX ライブラリ関数を使用して、MATLAB ワークスペースのデータを操作します。

MATLAB データ

MATLAB 言語が使用可能なオブジェクト型は、唯一、MATLAB 配列のみです。

MEX ファイルでのデータ フロー

MEX ファイル myFunction に 2 つの入力引数と 1 つの出力引数が含まれているとします。

C/C++ の文字列の処理

C/C++ MEX ファイルでは、MATLAB 文字ベクトルは mxChar 型の mxArray であり、ロケールに依存しないデータ表現 (Unicode® エンコード) を使用します。

メモリ管理

MEX ファイルから MATLAB に制御が戻るとき、左辺の引数 plhs[] に含まれる出力引数 mxArray に計算の結果が返されます。

C++ MEX ファイルの作成

MEX ファイルはすべての C++ 言語の規格をサポートしています。

大規模 mxArrays の処理

64 ビット プラットフォームでビルドされたバイナリ MEX ファイルでは、64 ビット mxArray を処理できます。

大規模ファイル I/O の処理

MATLAB は、MEX ファイル プログラム内での 64 ビット ファイル I/O の使用をサポートしています。

この情報は役に立ちましたか?