在使用单元格数组的MATLAB中使用parfor
时,我遇到了一个问题,我无法看到工作示例代码和我的错误行的任何区别!
对于每个工作人员,可以独立完成数据修改,我想使用变量切片,如MathWorks Blog
中所示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}
)data{file,1}(line,:)= []
的测试在没有Matlab警告的情况下运行。output = mlint('myFile.m')
,但它没有向我显示任何有用的提示。只有这一行才能打破一切。但我真的需要这个命令才能工作。任何提示/解决方法?
答案 0 :(得分:1)
你的代码不完整,我没试过,但这应该解决它:
parfor file=1:length(data(:,1))
line= 1;
length_line = length(data{file,1}(:,1));
dataslice=data{file,1}
while line <= length_line && ... && ...
% some more loops
if (...)
dataslice(line,:) = [];
length_line= length_line - 1;
end
% end of some more loops
line= line + 1;
end
data{file,1}=dataslice
end
% data will be returned
如果这没有帮助,请更新您的问题并提供可重复的示例(所有变量的初始化,完整代码)