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

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

目次

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

mxArray の操作

MAT ファイル インターフェイス ライブラリにより、MAT ファイル内の MATLAB® 配列 (mxArray 型) にアクセスできます。C/C++ または Fortran アプリケーションで mxArray を直接操作する場合、「MX 行列ライブラリ」の関数を使用します。「作業要件」で説明されているように、オプション ファイルはこのライブラリに既にリンクされています。

mxArray の操作例は、matlabroot/extern/examples/mexmatlabroot/extern/examples/mx のフォルダーにあります。以下のトピックでは、セルと構造体を扱う C コードの例を、これらの MEX の例に基づいて示します。例では、各配列要素内の mxArray の型に基づいてセル配列と構造体配列を読み取り、情報を表示する方法を示します。

MEX の例からアプリケーションを作成する場合、コードを書き換えてスタンドアロン アプリケーションとするためのヒントが記載されています。

  • MAT ファイルの例である matdgns.c では MAT ファイルの開き方と読み取り方を示します。例についての詳細は、「MAT ファイルの読み取り (C/C++)」を参照してください。

  • MEX の例である explore.c には、関数 mxClassID を使用して任意の MATLAB 型を読み取る機能があります。例についての詳細は、「データ型の使用」を参照してください。

  • 一部の MEX の例では、mexPrintf のような関数を MEX ライブラリ libmex から使用しています (C 関数の一覧は、「C++ MEX ファイルのビルド」を参照してください)。これらの関数は mxArray の操作時には必要ではありませんが、プログラムでこれらを呼び出すのであれば、MEX ライブラリにリンクしなければなりません。この場合、オプション ファイルを修正して link ステートメントに libmex.lib を追加します。

MAT ファイルからの構造体の読み取り

matreadstructarray.c の例は、explore.c 内の関数 analyze_structure を基にしています。単純化のため、この例では double 型の実数要素だけを処理します。エラー チェックや他の型の処理については、explore.c の例を参照してください。

コードを表示するには、MATLAB エディターでファイルを開きますファイルを開きます

このプログラムのビルド方法は、「MAT ファイル プログラムのコンパイルおよびリンク」を参照してください。

MAT ファイル プログラムのコンパイルとリンクが完了すると、以下の MAT ファイル testpatient.mat でスタンドアロン アプリケーションが実行可能になります。patient という構造体を作成し、保存します。

patient(1).name = 'John Doe';
patient(1).billing = 127.00;
patient(1).test = [79 75 73; 180 178 177.5; 172 170 169];
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];

save('testpatient.mat')

billing フィールドの合計を計算するには、次のように入力します。

!matreadstruct testpatient.mat patient billing
Total for billing: 155.50 

MAT ファイルからのセル配列の読み取り

matreadcellarray.c の例は、explore.c 内の関数 analyze_cell を基にしています。

コードを表示するには、MATLAB エディターでファイルを開きますファイルを開きます

このプログラムのビルド方法は、「MAT ファイル プログラムのコンパイルおよびリンク」を参照してください。

MAT ファイル プログラムのコンパイルとリンクが完了すると、以下の MAT ファイル testcells.mat でスタンドアロン アプリケーションが実行可能になります。3 つのセル変数を作成して保存します。

cellvar = {'hello'; [2 3 4 6 8 9]; [2; 4; 5]};
structvar = {'cell with a structure'; patient; [2; 4; 5]};
multicellvar = {'cell with a cell'; cellvar; patient};
save('testcells.mat','cellvar','structvar','multicellvar')

cellvar セルの内容の mxArray 型を表示するには、次のように入力します。

!matreadcell testcells.mat cellvar
0: string 
1: numeric class 
2: numeric class
この情報は役に立ちましたか?