我在Mathematica中有一个非常大的表((dimcub-1)^ 3个元素)来自逆FFT.我需要在这个表上使用周期性插值.由于周期性插值要求第一个元素和最后一个元素相等,我手动创建一个新的dim ^ 3元素表并在插值中使用它.它有效,但它很丑/慢,由于我多余的中间表,我更快地击中了记忆障碍.任何人都可以告诉我如何通过附加元素或使用我的非周期表来制作周期性插值函数,以某种方式将我的旧表转换为周期表?这是我目前的一段代码:
mr 1 是新表:
mr1 = Table[ 0. , {i, 1, dimcub}, {j, 1, dimcub}, {k, 1, dimcub}];
Do[Do[ Do[
mr1[[m, n, k]] = oldtable[[m, n, k]] ; , {m, 1,
dimcub - 1}]; , {n, 1, dimcub - 1}]; , {k, 1, dimcub - 1}];
Do[Do[ mr1[[m, n, dimcub]] = mr1[[m, n, 1]];
mr1[[m, dimcub, n]] = mr1[[m, 1, n]];
mr1[[dimcub, m, n]] = mr1[[1, m, n]]; , {m, 1, dimcub - 1}];
mr1[[n, dimcub, dimcub]] …Run Code Online (Sandbox Code Playgroud) 我有这么多数百个细胞长的Mathematica文件,我想使用并行评估.我有一个2处理器x 4核心每台机器16 Gb内存.我的Mathematica许可证允许我运行最多2个主内核,其中1个主机可能有4个从属内核(这是我用它玩了一段时间之后的解释).
我曾经在两个不同笔记本中的两个主内核中运行我的代码.为了进一步加快速度,我尝试用几个单元格封装ParallelEvaluate[]它似乎工作.然后我还有4个我的代码副本通过其中一个主内核不知道彼此运行,这很好.(我基本上试图尽可能多地并行运行我的代码/数学内核的副本.我不是在拍摄任何真正平行的东西).
由于我的代码太长而且复杂,我不想再次编辑每个单元格以使它们并行评估.我的笔记本电脑的开头是否有任何神奇之处,所以在此之后评估的每个单元格都是默认的ParallelEvaluate[ ... cell contents.... ]?