Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Manipulación de grandesmxArrays

Archivos MEX binarios construidos en plataformas de 64 bits pueden manejar 64-bit s.mxArray Estas grandes matrices de datos pueden tener hasta 248-1 elementos. El número máximo de elementos que un disperso puede tener es de 2mxArray48-2.

El uso de las siguientes instrucciones crea archivos MEX binarios independientes de la plataforma también.

La configuración del sistema puede afectar al rendimiento de.MATLAB® El requisito del procesador de 64 bits le permite crear y acceder a los datos en él.mxArray Sin embargo, la memoria del sistema, en particular el tamaño de la RAM y la memoria virtual, determinan la velocidad a la que procesa el.MATLABmxArray Cuanta más memoria esté disponible, más rápido se procesa.

La cantidad de RAM también limita la cantidad de datos que puede procesar al mismo tiempo.MATLAB Para obtener orientación sobre problemas de memoria, consulte.Strategies for Efficient Use of Memory

Con la API de 64 bits

Las firmas de las funciones de API que se muestran en la tabla siguiente utilizan los tipos o para trabajar con un 64 bits.mwSizemwIndexmxArray Las variables que se usan en el código fuente para llamar a estas funciones deben ser del tipo correcto.

C funciones uso/mxArraymwSizemwIndex

mxCalcSingleSubscriptmxGetJc
mxCallocmxGetM
mxCreateCellArraymxGetN
mxCreateCellMatrixmxGetNumberOfDimensions
mxCreateCharArraymxGetNumberOfElements
mxCreateCharMatrixFromStringsmxGetNzmax
mxCreateDoubleMatrixmxGetProperty
mxCreateLogicalArraymxGetString
mxCreateLogicalMatrixmxMalloc
mxCreateNumericArraymxRealloc
mxCreateNumericMatrixmxSetCell
mxCreateSparsemxSetDimensions
mxCreateSparseLogicalMatrixmxSetField
mxCreateStructArraymxSetFieldByNumber
mxCreateStructMatrixmxSetIr
mxGetCellmxSetJc
mxGetDimensionsmxSetM
mxGetElementSizemxSetN
mxGetFieldmxSetNzmax
mxGetFieldByNumbermxSetProperty
mxGetIr 

Ejemplo

El ejemplo, enarraySize.c matlabroot/extern/examples/mex, muestra los requisitos de memoria de s grandes.mxArray Para ver el ejemplo, abra arraySize.c en el editor.MATLAB

Esta función requiere una entrada numérica escalar positiva, que utiliza para crear una matriz cuadrada. Comprueba el tamaño de la entrada para asegurarse de que el sistema puede crear teóricamente una matriz de este tamaño. Si la entrada es válida, muestra el tamaño de la en kilobytes.mxArray

Construya este archivo MEX.

mex arraySize.c

Ejecute el archivo MEX.

arraySize(2^10)
Dimensions: 1024 x 1024 Size of array in kilobytes: 1024

Si el sistema no tiene suficiente memoria para crear la matriz, muestra un error.MATLABOut of memory

Puede experimentar con esta función para probar el rendimiento y los límites de la manipulación de matrices grandes en el sistema.

PRECAUCIÓN uso de valores negativos

Cuando se usa la API de 64 bits y son equivalentes a en C/C++.mwSizemwIndexsize_t Este tipo es unsigned, a diferencia de, que es el tipo utilizado en la API de 32 bits.int Tenga cuidado de no pasar ningún valor negativo a las funciones que toman o argumentos.mwSizemwIndex No lances valores negativos a o; no se puede predecir el valor devuelto.intmwSizemwIndex En su lugar, cambie el código para evitar el uso de valores negativos.

Creación de aplicaciones multiplataforma

Si desarrolla programas que pueden ejecutarse en arquitecturas de 32 bits y 64 bits, preste atención al límite superior de valores para y.mwSizemwIndex La aplicación de 32 bits lee estos valores y los asigna a las variables declaradas como en C/C++.int Tenga cuidado de no asignar un valor grande a una variable o a otra que pueda ser demasiado pequeña.mwSizemwIndexint

Consulte también

| |