Общее количество элементов в массиве определяется произведением размера каждого измерения.Ссылка в ответе Дэвида сообщает вам максимальное количество элементов, которые можно разместить в реальном массиве двойной точности.Массив nD
, который вас интересует, эквивалентен измененному вектору 1D
с тем же количеством элементов.
Таким образом, вы можете смешивать и сопоставлять количество элементов и создавать столько измерений, сколько хотите, с учетом следующих ограничений:
#i ∈ {1,2,..., M}
, где M
- этомаксимально возможное количество элементов, #i
- размер измерения i
∏#i=M
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)
, поскольку увеличение размера измерения приведет к уменьшению количества измерений.