Handling Large mxArrays
Binary MEX files built on 64-bit platforms can handle 64-bit
                              mxArrays. These large data arrays can have up to
                              248–1 elements. The maximum number of
                        elements a sparse mxArray can have is
                              248-2.
Using the following instructions creates platform-independent binary MEX files as well.
Your system configuration can affect the performance of MATLAB®. The 64-bit processor requirement enables you to create the
                              mxArray and access data in it. However, the system
                        memory, in particular the size of RAM and virtual memory, determine the
                        speed at which MATLAB processes the mxArray. The more memory
                        available, the faster the processing.
The amount of RAM also limits the amount of data you can process at one time in MATLAB. For guidance on memory issues, see Strategies for Efficient Use of Memory.
Using the 64-Bit API
The signatures of the API functions shown in the following table use
                              the mwSize or mwIndex types to
                              work with a 64-bit mxArray. The variables you use
                              in your source code to call these functions must be the correct
                              type.
Fortran mxArray Functions Using
                                          mwSize/mwIndex
| 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 | 
Caution Using Negative Values
When using the 64-bit API, mwSize and
                              mwIndex are equivalent to
                              INTEGER*8 in Fortran. This type is unsigned, unlike
                              INTEGER*4, which is the type used in the 32-bit
                        API. Be careful not to pass any negative values to functions that take
                              mwSize or mwIndex arguments.
                        Do not cast negative INTEGER*4 values to
                              mwSize or mwIndex; the
                        returned value cannot be predicted. Instead, change your code to avoid using
                        negative values.
Building Cross-Platform Applications
If you develop cross-platform applications (programs that can run on both
                        32-bit and 64-bit architectures), pay attention to the upper limit of values
                        you use for mwSize and mwIndex.
                        The 32-bit application reads these values and assigns them to variables
                        declared as INTEGER*4 in Fortran. Be careful to avoid
                        assigning a large mwSize or
                              mwIndex value to an INTEGER*4
                        or other variable that might be too small.