2011-02-26 25 views
3

我正在用Mathematica处理大型输入数组,它看起来像我无法处理大于(或等于)1024 * 1024和81 * 81 * 81的任何东西。这是正常的吗?我应该能够对这些输入数据进行计算吗?如果是这样,怎么样?在Mathematica中处理大数据

+0

你能指定你想要执行什么样的“进程”吗? – 2011-02-26 01:53:45

+1

您应该可以导入带有1024 * 1024元素的导出数据 - 并不那么大。你能提供更多细节吗? – Simon 2011-02-26 03:33:36

+0

请注意1024^2/81^3 = 2(aprox)。所以你的限制是不一致的。 – 2011-02-27 05:24:58

回答

3

我认为这取决于您正在执行什么计算

例如,在一个非常温和的膝上型:

Clear["Global`*"]; 
k = 2000; 
Timing[a = Table[i j + i - j, {i, k}, {j, k}]; 
[email protected]] 

需要20秒。

矩阵相乘高达1000×1000:

f[n_] := Table[RandomInteger[{1, n}], {n}, {n}]; 
ListLinePlot[ 
Table[{n, [email protected]@(#.#) &@f[n]}, {n, 100, 1000, 100}]] 

enter image description here

所以,这在很大程度上取决于你想计算一下。

+0

我明白了。那么,我的程序所做的就是评估一个1/2/3维数组的每个单元,并用它进行一些计算。现在处理大量输入并不重要,但我只是想知道是否有任何方法可以加快计算速度。 – 2011-02-27 19:19:26

+0

@Ricky从使用函数代替循环结构,通过获得机器中并行内核的优势,以及使用真正的怪物处理网格,有很多技巧可用。但是没有一个适合所有情况的银弹。你需要告诉我们更多关于你的具体问题。 – 2011-02-27 20:59:01

+0

@Ricky Robinson你检查了你的操作需要多长时间才能完成一个元素? – acl 2011-02-28 11:41:33