MATLAB parfor 删除值?

MATLAB parfor delete values?

使用此代码:

s=struct([]);
for i=1:5
 s(i).m=i;
 s(i)
end

一切正常..输出符合预期

ans = 
m: 1
ans = 
m: 2
ans = 
m: 3
ans = 
m: 4
ans = 
m: 5

使用 parfor 而不像这样访问 s=结构([]);

parfor i=1:5
 s(i).m=i;
end

似乎没问题..没有输出,但在工作区中我有正确的 5 元素结构数组;但是如果我尝试像这样访问 parfor 循环中的第 i 个元素

s=struct([]);
parfor i=1:5
   s(i).m=i;
   s(i)  
end

我在第 4 行有错误

Index exceeds matrix dimensions.

并且在工作区中,s 变量是 0x0 维度。 这是为什么?

试试这个..

s=struct([]);
s(5).m = 0;
parfor i=1:5
   s(i).m=i;
   s(i)
end

您的错误发生是因为您试图更改 parfor 循环中的结构。所以每个核心都独立地尝试添加字段 m。另一个问题是试图在 parfor 循环中动态地延长 s,这是一个禁忌。