ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

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

MAT ファイルの読み取りおよび書き込み用カスタム アプリケーションの作成

カスタム アプリケーション作成の理由

データを MATLAB® アプリケーションに取り込むには、「データのインポート方法」を参照してください。データを MAT ファイルに保存するには、「ワークスペース変数の保存、読み込み、削除」を参照してください。MATLAB によるアプリケーション全体のプログラミングや他の MATLAB ユーザーとのデータ共有はこの手順に従い実施します。しかし、データ操作を目的としたカスタム プログラムの作成が必要となる場合があります。例として以下の場合があります。

  • データにカスタム形式が含まれている。

  • MATLAB を操作しないユーザー向けにアプリケーションを作成し、MATLAB データを提供する。

  • 外部アプリケーションからデータを読み取りたいが、ソース コードにアクセスできない。

カスタム アプリケーションの作成に先立ち以下を参照し、MATLAB によるデータ交換が可能かどうかを確認してください。

機能に不足がある場合は、C/C++ または Fortran のカスタム プログラムを作成し、アプリケーションが要求する形式によるデータ ファイルの読み取りおよび書き込みを行うことができます。カスタム プログラムには次の 2 種類があります。

  • スタンドアロン プログラム — システム プロンプトから実行するか、または MATLAB で実行します (「外部コマンド、スクリプト、プログラムの実行」を参照)。アプリケーションのビルドには、MATLAB ライブラリが必要です。

  • MEX ファイル — MATLAB コマンド プロンプトからビルドして実行します。MEX ファイルの作成およびビルドの詳細は、「MEX ファイルの概要」を参照してください。

作業要件

カスタム アプリケーションの作成には、ソース コードを変更およびビルドするためのツールと知識が必要です。特に、MATLAB でサポートされるコンパイラが必要です。サポートしているコンパイラの最新の一覧については、「Supported and Compatible Compilers」Web ページを参照してください。

MATLAB データとのカスタム データの交換には、MATLAB 形式のバイナリ ファイルである "MAT ファイル" を使用します。MAT ファイル インターフェイス ライブラリにはデータ用の API が備わっているため、MAT ファイル形式の仕様を把握する必要はありません。MATLAB データにマッピングするデータについてはその詳細を把握していなければなりません。製品ドキュメンテーションからこの情報を入手し、MX 行列ライブラリにある mxArray 型を使用してプログラムでデータを宣言します。

カスタム プログラムでは以下の MATLAB C/C++ および Fortran の API 関数を使用します。

アプリケーションのビルドは、MAT ファイル アプリケーション用コンパイラ別 "オプション ファイル" を mex ビルド スクリプトと共に使用して行います。MATLAB では、ヘッダー ファイルおよびライブラリ、さらにビルド スクリプト作成の案内が提供されます。必要なファイルの名前と場所については、「MAT 関数ライブラリ」を参照してください。

ユーザー独自のビルド ツールを使用することもできます。

MAT ファイル インターフェイス ライブラリ

MAT ファイル ライブラリには、MAT ファイルの読み取りおよび書き込み用のルーチンがあります。ユーザー独自の C/C++ または Fortran プログラムからこれらのルーチンを呼び出します。独自コードを作成せずこれらのルーチンを使用して操作を実行します。ライブラリを使用することにより、アプリケーションは以降の MAT ファイル構造への変更に影響されなくなります。

MATLAB では MAT ファイルを表す MATFile 型が提供されています。

さまざまなスレッドで、MAT ファイル ライブラリ関数を使用する異なる MATLAB セッションを作成しないでください。MATLAB ライブラリはマルチスレッド セーフにはなっていないため、関数は一度に 1 つのスレッドでのみ使用可能です。

MAT ファイル ライブラリ関数は次の表の説明にあるように、mat の 3 文字で始まります。

MAT ファイルのルーチン

MAT 関数

目的

matOpen

MAT ファイルを開きます。

matClose

MAT ファイルを閉じます。

matGetDir

MAT ファイルから MATLAB 配列のリストを取得します。

matGetVariable

MAT ファイルから MATLAB 配列を読み取ります。

matPutVariable

MAT ファイルに MATLAB 配列を書き込みます。

matGetNextVariable

MAT ファイルから次の MATLAB 配列を読み取ります。

matDeleteVariable

MAT ファイルから MATLAB 配列を削除します。

matPutVariableAsGlobal

load コマンドがグローバル ワークスペースに置けるように、MATLAB 配列を MAT ファイルに入れます。

matGetVariableInfo

MAT ファイルから MATLAB 配列ヘッダーを読み込みます (データなし)。

matGetNextVariableInfo

MAT ファイルから次の MATLAB 配列ヘッダーを読み込みます (データなし)。

MAT ファイルの C 専用ルーチン

matGetFp

MAT ファイルを指す ANSI® C ファイル ポインターを取得します。

    メモ:   MAT ファイル インターフェイス ライブラリでは、ユーザー定義のクラスによって作成された MATLAB オブジェクトはサポートされていません。

関連付けられているファイルの検索

MATLAB には、MAT ファイルの読み取りおよび書き込みプログラムの作成に必要なインクルード ファイルとライブラリ ファイルが用意されています。次の表は、これらのファイルへのパス名の一覧です。matlabroot は、MATLAB がインストールされているルート フォルダーを示しています。arch は、プラットフォームを識別する一意の文字列です。

MAT 関数フォルダー

プラットフォーム

内容

フォルダー

Microsoft® Windows®

インクルード ファイル

matlabroot\extern\include

ライブラリ

matlabroot\bin\win32 または matlabroot\bin\win64

matlabroot\extern\examples\eng_mat

UNIX®

インクルード ファイル

matlabroot/extern/include

ライブラリ

matlabroot/bin/arch

matlabroot/extern/examples/eng_mat

MAT 関数のインクルード ファイル

include フォルダーは、関数宣言を含むヘッダー ファイルを API ライブラリでアクセス可能なルーチンのプロトタイプと共に格納しています。これらのファイルは、Windows と UNIX の両方のシステムで同じです。フォルダーには以下が格納されています。

  • mxArray 構造体の定義と行列アクセス ルーチンの関数プロトタイプを含む matrix.h ヘッダー ファイル。

  • mat ルーチンの関数プロトタイプを含む mat.h ヘッダー ファイル。

MAT 関数ライブラリ

対象プログラムをリンクするための共有 (動的にリンク可能な) ライブラリを含むライブラリ フォルダーの名前は、プラットフォームによって異なります。

Windows システム上の共有ライブラリ-  bin フォルダーには、対象のプログラムをリンクするための以下の共有ライブラリが含まれます。

  • MAT ファイル ルーチンの libmat.dll ライブラリ (C/C++ および Fortran)

  • 配列アクセスおよび作成ルーチンの libmx.dll ライブラリ

UNIX システムの共有ライブラリ-  bin/arch フォルダーには、対象プログラムをリンクするための共有ライブラリが含まれます。ここで、arch は使用マシンのアーキテクチャです。たとえば、Apple Macintosh 64 ビット システムでは、フォルダーは bin/maci64 になります。

  • MAT ファイル ルーチンの libmat.dylib ライブラリ (C/C++ および Fortran)

  • 配列アクセスおよび作成ルーチンの libmx.dylib ライブラリ

サンプル ファイル

examples/eng_mat フォルダーには、MAT ファイル ルーチンの使用方法を示す C/C++ および Fortran のソース コード例が含まれています。

プラットフォーム間のデータ ファイル交換

互いに異なるコンピューター システム上で MATLAB ソフトウェアを操作して、他のシステム上のユーザーに MATLAB アプリケーションを送信できます。MATLAB アプリケーションは、関数とスクリプトを含む MATLAB コードとバイナリ データを含む MAT ファイルから構成されます。

次のタイプのファイルはどちらもマシン間で直接転送できます。MATLAB ソース ファイル、これはプラットフォームに依存しないことから、MAT ファイルの方はファイル ヘッダーにマシン シグネチャを含んでいることからです。MATLAB では、ファイルを読み込むときにシグネチャを確認し、外部ファイルと判断された場合は必要な変換を行います。

異なるマシン アーキテクチャにわたって MATLAB を使用する場合、マシン間でバイナリ データと ASCII データの両方を交換する機能が必要です。このタイプの機能の例として、FTP、NFS、Kermit などがあります。これらのプログラムを使用する際は、MAT ファイルを "バイナリ ファイル モード" で転送し、MATLAB ソース ファイルを "ASCII ファイル モード" で転送するようにしてください。モードが正しく設定されていない場合データが破損します。

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