私のコードの一部をmatlabで並列化したいと思います。matlabでparforを使用する
v1=[1,3,6,8];
ggx=5.*ones(15,14);
gax=ones(15,14);
parfor i = 1:length(v1)
m = v1(i);
if m > 1
gax(1:m-1,m-1) = ggx(1:m-1,m-1);
end
if m<nn
gax(m+1:end,m) = ggx(m+1:end,m);
end
end
しかし、エラーがある: エラー:一部以下の例のためのparfor内の変数GAXはMATLAB、「概要」のループのclassified.Seeパラレルすることはできません。
どのようにエラーを取り除くことができますか?他の有用な情報は、v1が反復要素を含まない増加ベクトルであることである。
'parfor'の前に' gax'と 'gay'を初期化してみましたか?また、 'parfor'がこの場合にあなたのコードを最適化するのに役立つとは思いません。通常の 'for'ループだけを使う方が良いでしょう。 – kedarps
はい私はparforの前にそれらの値を与えました。 @kedarps –
これは、スライスされた変数インデックスの問題のようです。[here](https://www.mathworks.com/help/distcomp/troubleshoot-variables-in-parfor-loops.html)を参照してください。 – kedarps