Обработка больших mxArrays

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

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

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

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

Использование 64-Bit 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 или другой переменной, которая может быть слишком маленькой.