我正在尝试在 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 x p 矩阵,Xmj 是一个 1 x p 向量。错误是针对 X_train。通过阅读文档,我看到每个变量的索引必须在 parfor 循环中固定。但是,即使我注释掉该行X_train(bin_n, p) = X_train(bin_n, p) + 1;
(它的 X_train 索引与其他两行不同),我仍然会收到错误消息。有人可以解释一下为什么以及如何解决它吗?