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

Matlab 在parfor循环中使用表时出现透明度错误,matlab,for-loop,parfor,Matlab,For Loop,Parfor,我试图在MATLAB中使用parfor循环中的一个表。这给了我“透明度冲突错误。请参阅关于透明度的并行计算工具箱”我正在尝试构建此表,以便使用MATLAB分类学习器应用程序中经过训练的分类器进行预测(trainedClassifier.prefictFcn(T))…因此,要么我需要在parfor循环中构建一个表,要么我需要一个表的替代品,我仍然可以将它输入分类器 parfor i=1:100 acheck=1; bcheck=2; ccheck=3; T=tabl

我试图在MATLAB中使用parfor循环中的一个表。这给了我“透明度冲突错误。请参阅关于透明度的并行计算工具箱”我正在尝试构建此表,以便使用MATLAB分类学习器应用程序中经过训练的分类器进行预测(
trainedClassifier.prefictFcn(T)
)…因此,要么我需要在
parfor
循环中构建一个表,要么我需要一个表的替代品,我仍然可以将它输入分类器

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

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

parfor i=1:100
    acheck=1;
    bcheck=2;
    ccheck=3;
    T(i,:)=table([acheck,bcheck,ccheck]);
end
请注意,在原始程序中,您只需覆盖现有值,最终得到一个单行表。我认为这不是我的本意。事实上,这将是一场灾难的结果

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

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