Пределы
Есть два разных ограничения, о которых следует знать:
- Максимальный размер массива (с точки зрения количества элементов), разрешенный MATLAB, независимо от текущей доступности памяти.
- Текущие байты, доступные для одного массива - (текущий) максимально возможный размер массива в байтах.
Первый предел - это то, что вызывает "Превышен максимальный размер переменной, разрешенный программой" , а не второй предел. Однако второй также является практическим пределом, о котором вы должны знать!
Проверка лимитов
Максимально допустимое количество элементов для массива проверяется следующим образом:
>> [~,maxsize] = computer
maxsize =
2.8147e+14
Согласно документации для команды computer
, возвращается:
максимальное количество элементов, разрешенных в матрице в этой версии MATLAB
Это статический предел MATLAB для количества элементов , не зависит от состояния компьютера (технические характеристики оборудования и текущее использование памяти). Более 2 петабайт для массива double
такой длины также намного выше, чем у любого компьютера, о котором я знаю!
С другой стороны, наибольший практический размер массива, который вы можете создать в любой момент, можно проверить с помощью команды memory
:
>> memory
Maximum possible array: 35237 MB (3.695e+10 bytes) *
Memory available for all arrays: 35237 MB (3.695e+10 bytes) *
Memory used by MATLAB: 9545 MB (1.001e+10 bytes)
Physical Memory (RAM): 24574 MB (2.577e+10 bytes)
* Limited by System Memory (physical + swap file) available.
Как говорится в сообщении, эти значения основаны на фактической текущей доступности памяти с учетом как физической памяти, так и файла подкачки (вместе, виртуальной памяти).
При необходимости к этим значениям можно получить программный доступ с помощью m = memory;
.
Регулировка пределов
Первый предел (жесткий предел) был исправлен вплоть до R2015a, где он теперь может быть изменен (но только уменьшен до доли системной памяти) с помощью следующей настройки:
Вы не можете увеличить его за пределы вашей системы.
Второй предел, очевидно, не имеет «настройки» в MATLAB, поскольку он основан на доступной памяти и конфигурации компьютера. Помимо добавления оперативной памяти, вы не можете многое сделать: (1) pack
для консолидации памяти рабочей области и выполнения «сборки мусора», но это может помочь только на определенных платформах и (2) увеличение размер файла подкачки, чтобы другие объекты могли поменяться местами и дать MATLAB больше физической памяти. Но будьте осторожны, полагаясь на файл подкачки, так как ваш компьютер может перестать отвечать на запросы, если перехват файла подкачки .