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,这是一个禁忌。
使用此代码:
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,这是一个禁忌。