Насколько я исследовал, размер массивов, которые можно обрабатывать, зависит от API, с которым вы компилируете свои mex-файлы. Вы можете выбрать API, добавив соответствующий флаг в инструкции по компиляции. Подробности в документации Matlab в разделе "API-релиз спецификация c API".
Доступно 4 опции: -R2017b (default)
-R2018a
-largeArrayDims
и -compatibleArrayDims
,
В отношении размера массива -R2017b (default)
-R2018a
и -largeArrayDims
используется API обработки больших массивов, который согласно документации matlab mex может обрабатывать массивы более 2 31 -1 и, согласно документации API должен иметь возможность обрабатывать массивы до 2 48 -1 элементов и разреженные массивы до 2 48 -2.
Только последний параметр, -compatibleArrayDims
не будет обрабатывать массивы выше 2 31 -1
Помимо размера массива, эти параметры изменят способ обрабатываются несколько типов данных, заметно сложные типы и графические объекты.
Короче говоря:
-R2017b (default)
: 2 48 -1 элементов на массив -R2018a
: 2 48 -1 элементов на массив -largeArrayDims
: 2 48 -1 элементов на массив -compatibleArrayDims
2 31 -1 элементов на массив
Наконец, если вы хотите обрабатывать более крупные объекты, я вижу решение записать ваши результаты в файлы (.txt или .csv, например) в c - часть вашего кода и прочитайте их обратно в части matlab целиком или по частям.
Надеюсь, это помогло. Я новичок здесь, поэтому не стесняйтесь поправлять меня, если я допустил ошибку или проигнорировал этикет.