你好
我一直在使用parfor循环解决一个问题。但是我注意到,有时实际上不必运行大量的串行条目,我怀疑这会降低parfor循环相对于普通for循环的优势,无论何时它必须处理大量“非条目”.作为一个例子,这里是一个需要解决的假设情况和过程的说明。
=(1; 2; 3; 4、南南,南,南,南;10;11);
B=nan(尺寸(A));
帕弗ii=1:长度(A)
如果~isnan(A(ii))
B(ii)=A(ii);
终止
终止
如您所见,11个条目中有5个不需要运行,因此parfor相应地跳过了这些条目(对于实际情况,比率通常更像1/10,这就是为什么我正在探索替代解决方案)。但是,我想探索一种快速解决方案,使parfor循环本质上只计算实际条目。我的问题代码如下所示:金宝搏官方网站
=(1; 2; 3; 4、南南,南,南,南;10;11);
B=nan(尺寸(A));
第九=找到(~ isnan (A));
帕弗ii2=1:长度(ix)
ii=ix(ii2);
B(ii)=A(ii);
终止
Matlab不允许这样做。老兵可能会看到这一点,然后说“显然这是不可能的”,但我不明白为什么,更重要的是,我不明白我如何才能做出类似的作品
简单的
解决方法(即:不重建整个系统)
真实的
在parfor循环中处理),它只会计算正确的数字。
有人能帮我吗?
提前谢谢!
干杯
雅各布