Ubuntu parfor循环后Matlab变量为空

Ubuntu parfor循环后Matlab变量为空,ubuntu,matlab,parfor,Ubuntu,Matlab,Parfor,我尝试在Ubuntu 13.04机器上使用Matlab 2013a和i7处理器并行运行我的一些Matlab代码: range = [0.75 0.8]; scores = cell(length(range), 1); parfor i=1:length(range) pca_accuracy = range(i); scores{i, :} = cross_validation(data_features, labels, 69, pca_accuracy); end cros

我尝试在Ubuntu 13.04机器上使用Matlab 2013a和i7处理器并行运行我的一些Matlab代码:

range = [0.75 0.8];
scores = cell(length(range), 1);

parfor i=1:length(range)
   pca_accuracy = range(i);
   scores{i, :} = cross_validation(data_features, labels, 69, pca_accuracy);
end
cross\u validation()
返回一个矩阵。但是,在运行此代码后,变量
得分
仍然是一个2乘1的单元格数组,每个单元格都是空的。似乎
cross\u validation()
没有返回任何内容

如果我将parfor循环转换为普通for循环,它在这台计算机上也可以正常工作。我还在另一台计算机(Windows7,Matlab2013b)上测试了这段代码(使用parfor循环),它在那里运行良好

交叉验证()的简短版本是:

function scores = cross_validation(data_features, labels, number_of_test_blocks, pca_accuracy)
   number_of_samples = size(data_features, 1);
   samples_per_test_block = ceil(number_of_samples/number_of_test_blocks);
   scores = zeros(number_of_test_blocks, samples_per_test_block);
end
有人能给点建议吗


谢谢

我刚刚找到了我最初问题的答案:

我使用命令
Matlab-nodisplay-nodesktop-r“run('scriptname')”
从终端运行上述Matlab脚本。出于某种原因,这没有将值分配给parfor循环之后的
分数

现在,使用
matlab-nodisplay-nodesktop-r“scriptname”
运行脚本,或者在matlab中执行脚本,都可以使脚本工作得很好


@mathworks:这是一个bug吗?:)

您能否提供一个精简的交叉验证变量和变量,以便我们可以检查我们的机器上是否有相同的行为?@bdecaf谢谢!我将代码添加到了最初的帖子中。也许2013a的
parfor
会被
得分{I,:}
甩掉。您是否尝试过分配给
分数{i,1}
?@s.bandara谢谢您的回答。不幸的是,这也不起作用。我不认为这会使变量为空,但分配给
pca\u accurity
可能会阻止并行化(分配给所有工作人员的相同对象)。--你能举一个所有变量的例子吗?您的代码是不可运行的。