mxArrays
在C MEX文件中在64位平台上构建的二进制MEX文件可以处理64位MX阵列
这些大型数据数组最多可以有2个481的元素。稀疏的元素的最大数目MX阵列
可以有2个48-2.
使用下面的说明也可以创建独立于平台的二进制MEX文件。
你的系统配置会影响MATLAB的性能®.64位处理器要求允许您创建MX阵列
并访问其中的数据。但是,系统内存,特别是RAM和虚拟内存的大小,决定了MATLAB处理数据的速度MX阵列
.可用的内存越多,处理速度就越快。
RAM的数量也限制了您在MATLAB中一次可以处理的数据量。有关内存问题的指导,请参阅高效使用内存的策略.
下表中显示的API函数的签名使用mwSize
或mwIndex
类型来处理64位MX阵列
.在源代码中用于调用这些函数的变量必须是正确的类型。
CMX阵列
函数的使用mwSize
/mwIndex
mxCalcSingleSubscript |
mxGetJc |
mxCalloc |
mxGetM |
mxCreateCellArray |
mxGetN |
mxCreateCellMatrix |
mxGetNumberOfDimensions |
mxCreateCharArray |
mxGetNumberOfElements |
mxCreateCharMatrixFromStrings |
mxGetNzmax |
mxCreateDoubleMatrix |
mxGetProperty |
mxCreateLogicalArray |
mxGetString |
mxCreateLogicalMatrix |
mxMalloc |
mxCreateNumericArray |
mxRealloc |
mxCreateNumericMatrix |
mxSetCell |
mxCreateSparse |
mxSetDimensions |
mxCreateSparseLogicalMatrix |
mxSetField |
mxCreateStructArray |
mxSetFieldByNumber |
mxCreateStructMatrix |
mxSetIr |
mxGetCell |
mxSetJc |
mxGetDimensions |
mxSetM |
mxGetElementSize |
mxSetN |
mxGetField |
mxSetNzmax |
mxGetFieldByNumber |
mxSetProperty |
mxGetIr |
这个例子中,arraySize.c
在
,表示内存需求大草根
走读生/ /墨西哥人例子MX阵列
要查看示例,请打开arraySize.c
在MATLAB编辑器中。
这个函数需要一个正标量数值输入,它使用这个输入来创建方阵。它会检查输入的大小,以确保系统理论上可以创建这个大小的矩阵。如果输入有效,则显示MX阵列
在千字节。
构建这个MEX文件。
墨西哥arraySize.c
运行MEX文件。
arraySize (2 ^ 10)
尺寸:1024 x 1024数组大小(单位为千字节):1024
如果你的系统没有足够的内存来创建数组,MATLAB会显示一个内存不足
错误
您可以使用此函数进行试验,以测试系统上处理大型数组的性能和限制。
当使用64位API时,mwSize
和mwIndex
相当于size_t
在C / c++。这种类型是无符号的,不像int
,这是32位API中使用的类型。注意不要将任何负数传递给函数mwSize
或mwIndex
参数。不要投底片int
值mwSize
或mwIndex
;无法预测返回值。相反,更改代码以避免使用负值。
如果您开发的程序可以在32位和64位体系结构上运行,请注意mwSize
和mwIndex
.32位的应用程序读取这些值并将它们赋给声明为int
在C / c++。注意避免分配一个大的mwSize
或mwIndex
一个价值int
或者其他可能太小的变量。