我对同一样本MATLAB代码有两个问题:
for i = 1:N
for j = 1:4
M(CONNECT(e(i),j)) = M(CONNECT(e(i),j))+p(i)*N(i,j);
end
end
感谢您的帮助。
答案 0 :(得分:0)
parfor
限制了您允许用于输出变量的索引形式。即使您可能独立地运行M
元素,parfor
基础架构也需要能够提前证明发生了什么。因此,对切片输出变量的限制基本上是必须在i
的索引列表中直接使用循环变量M
。更多详细信息,请参阅文档here。
我将假设CONNECT
或者是另一个变量,或者是一个简单的函数 - 在这种情况下,你最好的选择是追求矢量化。这个代码是否可以被矢量化取决于你没有向我们展示的细节 - 即我们需要一个最小的工作示例。 parfor
通常仅在循环体中的计算量大于运行循环时必须传输的数据量时才有用。