使用时parfor
使用单元格数组的 MATLAB 中使用时,我遇到了一个问题,我看不出与工作示例代码和我的错误线有任何区别!
数据的修改可以为每个工人独立完成,我想使用变量的切片,如MathWorks 博客中所示
A3 = cell(10,1);
parfor ix = 1:10
for jx = 1:10
A3{ix}(jx) = ix + jx;
end
end
A3 = cell2mat(A3);
我做了与示例中完全相同的一级索引,但 MATLAB 无法对其进行分类。
我希望删除某些行: 每行都有文件文件 与其他循环中的某些值(为简单起见未显示)进行比较的行。将为每个文件分配一个工作人员。
parfor file=1:length(data(:,1))
line= 1;
length_line = length(data{file,1}(:,1));
while line <= length_line && ... && ...
% some more loops
if (...)
data{file,1}(line,:) = [];
length_line= length_line - 1;
end
% end of some more loops
line= line + 1;
end
end
% data will be returned
我不明白为什么它不应该工作!我考虑到的:
data
将被修改,以便每个工人的修改不会对其他人产生交叉影响(删除的行只是实际工人数据的子集部分)- 切片索引必须在第一级完成 (
data{file,1}
) - 其他第一级索引变量将被视为常量/是常量,我使用“1”所以一切都很好。
- 没有对稍后将在外部使用的变量进行 in-parloop 分配(甚至不是常量)
- 没有行的测试
data{file,1}(line,:)= []
在没有 Matlab 警告的情况下运行。 - 尝试了 MATLAB 静态代码分析器
output = mlint('myFile.m')
,但它没有向我显示任何有用的提示。
仅仅这一行就打破了一切。但我真的需要这个命令才能工作。任何提示/解决方法?