大規模な mxArray
の処理
64 ビット プラットフォームでビルドされたバイナリ MEX ファイルでは、64 ビット mxArray
を処理できます。この大規模なデータ配列がもち得る最大要素数は 248–1 です。スパース mxArray
で可能な最大要素数は、248-2 です。
以下の指示に従うことで、プラットフォームに依存しないバイナリ MEX ファイルも作成されます。
システム構成が MATLAB® のパフォーマンスに影響を与える可能性があります。64 ビット プロセッサの要件を満たしている場合、mxArray
を作成して、そのデータにアクセスできるようになります。ただし、システム メモリ、特に RAM とバーチャル メモリのサイズによって MATLAB による mxArray
の処理速度は変わります。利用できるメモリ量が大きいほど、処理は速くなります。
また、RAM のサイズによって、MATLAB が一度に処理できるデータの量が制限されます。メモリ問題の詳細は、メモリを効率的に使用するための対策を参照してください。
64 ビット API の使用
次の表に示されている API 関数のシグネチャは、mwSize
型または mwIndex
型を使用して 64 ビット mxArray
を処理します。ソース コードでこれらの関数の呼び出しに使用する変数は、適切な型でなければなりません。
mwSize
/mwIndex
を使用する Fortran 関数 mxArray
mxCalcSingleSubscript | mxCreateStructMatrix |
mxCalloc | mxGetCell |
| mxGetDimensions |
| mxGetElementSize |
| mxGetField |
| mxGetFieldByNumber |
| mxGetIr |
| mxGetJc |
| mxGetM |
| mxGetN |
| mxGetNumberOfDimensions |
| mxGetNumberOfElements |
| mxGetNzmax |
| mxGetProperty |
| mxGetString |
| mxMalloc |
| mxRealloc |
| mxSetCell |
| mxSetDimensions |
mxCreateCellArray | mxSetField |
mxCreateCellMatrix | mxSetFieldByNumber |
mxCreateCharArray | mxSetIr |
mxCreateCharMatrixFromStrings | mxSetJc |
mxCreateDoubleMatrix | mxSetM |
mxCreateNumericArray | mxSetN |
mxCreateNumericMatrix | mxSetNzmax |
mxCreateSparse | mxSetProperty |
mxCreateStructArray |
負の値を使用する場合の注意
64 ビット API を使用する場合、関数 mwSize
および関数 mwIndex
は Fortran の INTEGER*8
と等価です。この型は符号なしで、32 ビット API で使用される型 INTEGER*4
とは異なります。mwSize
引数または mwIndex
引数を取る関数に負の値を渡さないように注意してください。負の INTEGER*4
値を関数 mwSize
または関数 mwIndex
にキャストしないでください。返される値を予測できません。代わりに、負の値が使用されないようにコードを変更してください。
クロスプラットフォーム アプリケーションのビルド
クロスプラットフォーム アプリケーション (32 ビット アーキテクチャと 64 ビット アーキテクチャの両方で動作するプログラム) を開発する場合、mwSize
および mwIndex
に使用する値の上限に注意してください。32 ビット アプリケーションは、これらの値を読み取り、Fortran の INTEGER*4
として宣言された変数に代入されます。大きい mwSize
または mwIndex
の値を、小さすぎる可能性がある INTEGER*4
またはその他の変数に代入しないようにしてください。