Matlab parfor循环索引

Zon*_*ong 9 matlab parfor

有人在matlab中使用parfor知道这个简单代码中发生了什么吗?谢谢,

我将矩阵切成四个数组,并希望独立更新每个数组中的元素

这是一个简单的版本:

a = zeros(4,4);  
parfor i = 1:4  
    j = 2;      
    a(j,i) = 3;  
end
Run Code Online (Sandbox Code Playgroud)

错误:'a'的有效索引在parfor循环中受到限制;

然而,

这工作:

a = zeros(4,4);  
parfor i = 1:4  
    a(2,i) = 3;  
end
Run Code Online (Sandbox Code Playgroud)

另一个更简单的非工作版本具有相同的错误:

a = zeros(4,4);  
parfor i = 1:4  
    a(i,i) = 3;  
end
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,索引j是通过某种算法为每个数组独立生成的

mmu*_*oss 2

您想要实现的目标似乎是不可能的。

根据matlab文档:

当您将其他变量与循环变量一起使用来索引数组时,无法在循环内设置这些变量。实际上,这些变量在整个 parfor 语句的执行过程中是恒定的。不能将循环变量与其自身组合起来形成索引表达式。

MATLAB 文档源

因此,除了循环变量之外,用于索引数组的所有变量在整个循环中都必须保持不变。