MATLAB中每个数据容器支持的最大元素和尺寸

时间:2011-03-31 22:17:01

标签: matlab

我正在开发一个需要处理相对较大的数据集(多TB)的项目,并希望知道以下问题的答案,以便做出适当的架构和设计决策(即主要是关于数据集的拆分) ):

  • 我可以在每个MATLAB containers中保存的元素的最大数量(我最感兴趣的是nD数组和单元格)
  • 每种容器类型支持的维度的最大数量是多少。

有没有硬性限制?是否可以在执行期间确定动态限制? (即取决于内存可用性?)。

这些限制是否取决于架构? (例如64比32比特)。我对64位系统(Windows和Linux)的答案特别感兴趣。

我找不到涵盖上述问题的好参考,所以任何指针都会非常感激!

谢谢!

2 个答案:

答案 0 :(得分:3)

This page根据向量的平台和体系结构给出最大尺寸。看起来它们不是硬限制,而是最适合操作系统和其他服务的内存。我认为细胞有相似的限制,如果不是相同的话。

答案 1 :(得分:1)

数组中元素的总数由每个维度的大小的乘积给出。 David的答案中的链接告诉您实际双精度数组中可容纳的最大元素数。您感兴趣的nD数组相当于具有相同元素数的重新整形的1D向量。

因此,您可以根据需要混合和匹配元素数量并创建任意数量的维度,但需遵守以下约束条件。

  1. #i ∈ {1,2,..., M}M是最大可能的元素数,#i是维度i的大小
  2. ∏#i=M
  3. i ∈ {1,2,..., M}(虽然这是前两个,我以为我会陈述它)
  4. 例如,在我的机器上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),因为增加维度的大小会减少维度的数量。