Максимальное количество элементов и измерений, поддерживаемых каждым контейнером данных в MATLAB - PullRequest
1 голос
/ 01 апреля 2011

Я работаю над проектом, который требует обработки относительно больших наборов данных (несколько терабайт) и хотел бы узнать ответ на следующие вопросы, чтобы принять соответствующие архитектурные и проектные решения (т.е. в основном в отношении разделения наборов данных). ):

  • Каково максимальное количество элементов , которое я могу хранить в каждом из контейнеров MATLAB (меня больше всего интересуют массивы и ячейки nD)
  • Какое максимальное количество измерений поддерживается каждым типом контейнера.

Есть ли жесткие ограничения? Можно ли определить динамические ограничения во время исполнения? (т.е. зависит от доступности памяти?).

Эти пределы зависят от архитектуры? (например, 64 против 32 бит). Меня особенно интересуют ответы, касающиеся 64-битных систем (как для Windows, так и для Linux).

Я не смог найти хорошую справку, которая охватывает вопросы выше, поэтому любые указатели будут с благодарностью!

Спасибо!

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Эта страница дает максимальные размеры по платформе и архитектуре для векторов.Кажется, что это не жесткие ограничения, а самый большой вектор, который поместится в памяти вместе с ОС и другими сервисами.Я полагаю, что ячейки имеют схожие, если не одинаковые ограничения.

1 голос
/ 01 апреля 2011

Общее количество элементов в массиве определяется произведением размера каждого измерения.Ссылка в ответе Дэвида сообщает вам максимальное количество элементов, которые можно разместить в реальном массиве двойной точности.Массив nD, который вас интересует, эквивалентен измененному вектору 1D с тем же количеством элементов.

Таким образом, вы можете смешивать и сопоставлять количество элементов и создавать столько измерений, сколько хотите, с учетом следующих ограничений:

  1. #i ∈ {1,2,..., M}, где M - этомаксимально возможное количество элементов, #i - размер измерения i
  2. ∏#i=M
  3. i ∈ {1,2,..., M} (хотя это следует из предыдущих двух, я подумал, чтоэто)

Так, например, на моей машине M ≈ 2^30.

a=randn(2^30,1);%# create a column vector with 2^30 rows
a=reshape(a,2,2^29);%# reshape it into a 2D matrix with 2 rows and 2^29 columns
a=reshape(a,2*ones(30,1)');%# reshape it into a 30D array with 2 elements in each dimension

Таким образом, жесткая верхняя граница для максимального числа не-одиночных измерений будет log2(M), поскольку увеличение размера измерения приведет к уменьшению количества измерений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...