MATLAB でループを並列化しようとすると、「'X_train' の有効なインデックスは PARFOR ループで制限されています」というエラーが表示されます。私のコードは以下の通りです:
parfor c = 1:num_channels
% sum_n_train calculated here
for n = 1:sum_n_train
bin_n = bin(n);
Xmj = X_train(bin_n, :);
% some calculations happen in between
X_train(bin_n,:) = Xmj;
X_train(bin_n, p) = X_train(bin_n, p) + 1;
z_train(n)= zind;
end
z_train_cell{c} = z_train;
end
X_train は n 行 p 列の行列で、Xmj は 1 行 p 列のベクトルです。エラーは X_train のものです。ドキュメントを読むと、すべての変数のインデックス付けを parfor ループ内で修正する必要があることがわかります。ただし、行をコメントアウトしてもX_train(bin_n, p) = X_train(bin_n, p) + 1;
(X_train のインデックスが他の 2 行とは異なります)、それでもエラーが発生します。誰かが理由とそれを回避する方法を説明してもらえますか?