Main Content

大規模な 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

mxCalcSingleSubscriptmxCreateStructMatrix
mxCallocmxGetCell

mxCopyCharacterToPtr

mxGetDimensions

mxCopyComplex16ToPtr

mxGetElementSize

mxCopyComplex8ToPtr

mxGetField

mxCopyInteger1ToPtr

mxGetFieldByNumber

mxCopyInteger2ToPtr

mxGetIr

mxCopyInteger4ToPtr

mxGetJc

mxCopyPtrToCharacter

mxGetM

mxCopyPtrToComplex16

mxGetN

mxCopyPtrToComplex8

mxGetNumberOfDimensions

mxCopyPtrToInteger1

mxGetNumberOfElements

mxCopyPtrToInteger2

mxGetNzmax

mxCopyPtrToInteger4

mxGetProperty

mxCopyPtrToPtrArray

mxGetString

mxCopyPtrToReal4

mxMalloc

mxCopyPtrToReal8

mxRealloc

mxCopyReal4ToPtr

mxSetCell

mxCopyReal8ToPtr

mxSetDimensions
mxCreateCellArraymxSetField
mxCreateCellMatrixmxSetFieldByNumber
mxCreateCharArraymxSetIr
mxCreateCharMatrixFromStringsmxSetJc
mxCreateDoubleMatrixmxSetM
mxCreateNumericArraymxSetN
mxCreateNumericMatrixmxSetNzmax
mxCreateSparsemxSetProperty
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 またはその他の変数に代入しないようにしてください。