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()
行列を返します。ただし、このコードを実行した後でも、 variablescores
は 2 行 1 列の cell 配列のままで、各セルは空です。cross_validation()
何も返さないようです。
parfor ループを通常の for ループに変換すると、このコンピューターでも問題なく動作します。また、このコードを別のコンピューター (Windows 7、Matlab 2013b) で (parfor ループを使用して) テストしたところ、正常に動作しました。
の短いバージョン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
誰でもアドバイスできますか?
ありがとう!