並行して実行したいこのコードがあります。parforループを含む関数に渡される引数の1つは、parforループ内で実行される関数ハンドルです。このような
[X] = randstep( X,params,roomfun )
...
parfor i=1:N
while ~ok
X(:,i) = A*X(:,i);
if roomfun(X(:,i))
ok = 1;
end
end
end
ただし、MATLABはroomfunについて不平を言い、インデックスは付けられているがスライスされていないという。もちろん、他のループを繰り返さなくても正常に実行できる関数であるため、これは当てはまりません。
これが関数であるとmatlabに伝える方法はありますか、それともこれを並行して実行するためにループを編成する別の方法はありますか?