透明度在parfor循环中使用表时出错

时间:2017-11-24 23:03:31

标签: matlab for-loop parfor

我正在尝试在MATLAB中使用parfor循环中的表。这给了我"透明度违规错误。请参阅并行计算工具箱了解透明度"我正在尝试构建此表,以便我可以使用MATLAB分类学习器应用程序(parfor)中训练有素的分类器进行预测...所以我需要在{{1}内构建一个表循环或需要一些替代表,我仍然可以提供给分类器。

parfor i=1:100
    acheck=1;
    bcheck=2;
    ccheck=3;
    T=table(acheck,bcheck,ccheck);
end

1 个答案:

答案 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的每一行。如果省略方括号,则程序会抛出透明度错误。不幸的是,我不知道为什么会这样,但可能是表数据结构所做的操作导致了这一点。也许别人会知道答案,但现在这似乎解决了你的问题。