我正在尝试在具有 Matlab 2013a 和 i7 处理器的 Ubuntu 13.04 机器上并行运行我的一些 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_validation()
返回一个矩阵。但是,运行此代码后,变量scores
仍然是一个 2×1 元胞数组,每个元胞为空。好像cross_validation()
什么都没有返回。
如果我将 parfor 循环转换为普通的 for 循环,它在这台计算机上也可以正常工作。我还在另一台计算机(Windows 7,Matlab 2013b)上测试了这段代码(使用 parfor-loop),它在那里运行良好。
一个简短的版本cross_validation()
是:
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
有人可以给建议吗?
谢谢!