Matlab 为什么innerjoin在parfor中不起作用

Matlab 为什么innerjoin在parfor中不起作用,matlab,parfor,Matlab,Parfor,在matlab中使用parfor编写代码时。我有一个错误,因为使用innerjoin如下。我发现有一个透明度错误,因为 N_boot = 5; coeff_out2 = zeros(N_boot,N_coef); sampled_id01 = zeros(Ndecisions,1); sampled_id2 = table(sampled_id01, 'VariableNames', {'decision_id00'}); resample_dta = []; parfor i = 1:N_bo

在matlab中使用
parfor
编写代码时。我有一个错误,因为使用innerjoin如下。我发现有一个透明度错误,因为

N_boot = 5;
coeff_out2 = zeros(N_boot,N_coef);
sampled_id01 = zeros(Ndecisions,1);
sampled_id2 = table(sampled_id01, 'VariableNames', {'decision_id00'});
resample_dta = [];
parfor i = 1:N_boot
dta2 = dta;
dta2.Properties.VariableNames{1} = 'decision_id00';
decisions2 = unique(dta2.decision_id00);
Ndecisions2 = size(decisions2,1);
sampled_id01 = randsample(decisions2,Ndecisions2,true);
sampled_id2 = table(sampled_id01, 'VariableNames', {'decision_id00'});
resample_dta = innerjoin(sampled_id2,dta2,'Keys','decision_id00');
resample_dta = table2array(resample_dta);
result1 = mean(resample_dta(:,1:4));
coeff_out2(i,:) = result1;
end
这个代码一直在说

Error using tabular/innerjoin (line 96)
Transparency violation error.

我不知道为什么像上面那样使用innerjoin会导致透明度错误。当我使用just for循环时,没有问题。

不幸的是,
innerjoin
使用了
inputname
函数,这导致了“透明度冲突”错误。有一个简单的解决方法,就是将对
innerjoin
的调用包装起来,如下所示:

innerjoinFcn = @(varargin) innerjoin(varargin{:});
parfor ...
    ...
    resample_dta = innerjoinFcn(sampled_id2,dta2,'Keys','decision_id00');
end