目前我有一个parfor循环在MATLAB中对结构进行计算。虽然我的代码是有点长后,可以使用下面的例子来模拟:存储结构变量在Parfor循环中计算 - MATLAB
a.test = [1 2 3];
result = [];
parfor i = 1:3
c = a;
c.test(2) = round(rand());
if c.test(2) == 1
%# Store c in result
end
end
disp(result.test) %# Should show [1 1 3]
一个(因而c)是一个非常大的结构,所以存储每次迭代是不适合我(因可行内存限制)。
理想情况下,我希望能够将c直接存储到我在parfor循环之前初始化的变量。看看MATLAB的Example: Using a Custom Reduction Function,我可以看到可以存储给定的迭代变量(不必存储每一次迭代),但我不完全理解它们的方法。我很困惑他们的函数如何产生2个独立的输出变量(看似),而函数只定义了一个输出变量。
我相信这是一个非常普遍的问题,但到目前为止,我的搜索没有得到任何有效的结果。
任何帮助将不胜感激。
我对你的意思是什么在这里有些困惑:你想要做的并行迭代,只有采取通过一些测试(可能取消其他任务)的第一个结果?如果你正在讨论数组中的'cummax'函数,它只会执行一个输出(恰好是一个2元素数组)。 – Dougal 2012-04-13 05:25:08
关于'cummax'功能,我现在看到它。起初我没有把A(1)和B(1)作为手续,但我看到它现在在做什么。尽管它不适用于我,但你仍在写作。取消其他任务并不重要,取得结果更重要。不过,下面的Jonas展示了一个简单的方法来做到这一点。 – rbhalla 2012-04-13 16:36:54