我正在尝试在MATLAB中使用parfor循环中的表。这给了我"透明度违规错误。请参阅并行计算工具箱了解透明度"我正在尝试构建此表,以便我可以使用MATLAB分类学习器应用程序(parfor
)中训练有素的分类器进行预测...所以我需要在{{1}内构建一个表循环或需要一些替代表,我仍然可以提供给分类器。
parfor i=1:100
acheck=1;
bcheck=2;
ccheck=3;
T=table(acheck,bcheck,ccheck);
end
答案 0 :(得分:3)
此解决方案适用于您的特定问题:
parfor i=1:100
acheck=1;
bcheck=2;
ccheck=3;
T(i,:)=table([acheck,bcheck,ccheck]);
end
请注意,在原始程序中,您只需覆盖现有值,最后使用一行表。我认为这不是故意的。实际上,这将是一个for的结果。
此外,因为这是一个parfor并且T在循环内部创建(以及acheck等),使用T只会创建任何内容。该变量是一个临时变量,对于每个进程在本地可见,并在全局范围内被破坏(可以找到更多here)。
要修复覆盖和可访问性,程序会将每组变量分配给T的每一行。如果省略方括号,则程序会抛出透明度错误。不幸的是,我不知道为什么会这样,但可能是表数据结构所做的操作导致了这一点。也许别人会知道答案,但现在这似乎解决了你的问题。