【问题标题】:Transparency Error when using table in parfor loop在 parfor 循环中使用表时出现透明度错误
【发布时间】:2018-05-08 22:13:30
【问题描述】:

我正在尝试在 MATLAB 的 parfor 循环中使用表。这给了我“透明度违规错误。请参阅有关透明度的并行计算工具箱”我正在尝试构建此表,以便我可以使用来自 MATLAB 分类学习器应用程序 (trainedClassifier.prefictFcn(T)) 的经过训练的分类器进行预测......所以要么我需要在parfor 循环中构建一个表,或者需要一些我仍然可以输入分类器的表的替代方法。

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

【问题讨论】:

    标签: matlab for-loop parfor


    【解决方案1】:

    此解决方案适用于您的特定问题:

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

    请注意,在您的原始程序中,您只需覆盖现有值并最终得到一个单行表。我认为那不是故意的。实际上,这将是一个 for 的结果。

    此外,由于这是一个 parfor 并且 T 是在循环内创建的(以及 acheck 等),因此仅使用 T 根本不会创建任何内容。该变量是一个临时变量,对每个进程本地可见并在全局范围内销毁(更多可以找到here)。

    为了修复覆盖和可访问性,程序将每组变量分配给 T 的每一行。如果省略方括号,程序将引发透明度错误。不幸的是,我不知道为什么会这样,但可能是表数据结构完成的操作导致了这种情况。也许其他人会知道答案,不过现在这似乎解决了你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2017-03-26
      相关资源
      最近更新 更多