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

Бинарные файлы MEX основывались на 64-битных платформах, может обработать 64-битный mxArrays. Эти большие массивы данных могут иметь до 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 или другая переменная, которая может слишком быть малой.