两个同时循环MATLAB或C ++

时间:2012-01-21 18:27:16

标签: c++ matlab for-loop

我想运行两个依赖的非嵌套for循环。实质上它们是两个同时马尔可夫链,其中一个循环需要检查另一个循环中的值。有没有正确的方法来做到这一点?有没有错误/低效的方法可以避免?

虚构的例子:

想象一下,有两个人在房间里走动并触摸东西:我将他们触摸的东西记录在两个独立的阵列中。这是我的两个Chainsfor循环。只要他们的行为是独立的,那就没问题了。但我想改变这一点,因此他们必须(实时)对另一个人正在做的事情作出反应。这可能吗(肯定是的)?

例如,循环1看起来像

for k=1:n
    do something

     %check loop 2
     if something is equivalent
          moves=n;
     end        
end

NB。从技术上讲,它可以在另一个循环之后完成,但我希望尽可能实时运行。

1 个答案:

答案 0 :(得分:2)

您可能希望将此构造为一个同时处理两个链的for循环。在伪代码中

for k = 1:n
    compute step k of chain 1
    compute step k of chain 2

    deal with interaction between chains

您需要将每个链打包在一个可以传递给函数的数据结构中,这样您就不必在修改变量名的情况下重复两次“计算步骤k”代码。

只有当这种串行方法太慢时才会担心并行化。