Обработка Большого mxArrays

Бинарные файлы MEX основывались на 64-битных платформах, может обработать 64-битный mxArray s. Эти большие массивы данных могут иметь до 248-1 элемента. Максимальное количество элементов, которые может иметь разреженный mxArray, 248-2.

Используя следующие инструкции создает платформенно независимые бинарные файлы MEX также.

Ваша конфигурация системы может влиять на производительность MATLAB®. 64-битное требование процессора позволяет вам создать mxArray и данные о доступе в нем. Однако системная память, в частности размер Оперативной и виртуальной памяти, определяет скорость, на которой MATLAB обрабатывает mxArray. Чем больше доступной памяти, тем быстрее обработка.

Сумма RAM также ограничивает объем данных, который можно обработать когда-то в MATLAB. Для руководства на проблемах памяти см. Стратегии Эффективного использования Памяти.

Используя 64-битный API

Подписи API-функций, показанных в следующей таблице, используют mwSize или типы mwIndex, чтобы работать с 64-битным mxArray. Переменные, которые вы используете в своем исходном коде, чтобы вызвать эти функции, должны быть правильным типом.

Фортран функции mxArray Используя mwSize/mwIndex

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 эквивалентны INTEGER*8 на Фортране. Этот тип без знака, в отличие от INTEGER*4, который является типом, используемым в 32-битном API. Бойтесь передавать любые отрицательные величины функциям тот, берут аргументы mwSize или mwIndex. Не бросайте отрицательные значения INTEGER*4 к mwSize или mwIndex; возвращенное значение не может быть предсказано. Вместо этого измените свой код, чтобы избегать использования отрицательных величин.

Создание кросс-платформенных приложений

Если вы разрабатываете кросс-платформенные приложения (программы, которые могут работать и на 32-битной и 64-битной архитектуре), обратите внимание на верхний предел значений, которые вы используете для mwSize и mwIndex. 32-битное приложение читает эти значения и присваивает их переменным, объявленным как INTEGER*4 на Фортране. Старайтесь постараться не присваивать большой mwSize или значение mwIndex к INTEGER*4 или другой переменной, которая может быть слишком маленькой.