ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

afterEachafterAll を使用したユーザー インターフェイスの非同期更新

parfeval を使用してワーカーで非同期の計算を実行し、ユーザー インターフェイスを応答可能な状態に保つことができます。中間計算が使用可能になったら、afterEach を使用してユーザー インターフェイスを更新します。すべての計算が使用可能になったら、afterAll を使用してユーザー インターフェイスを更新します。

waitbar を使用して単純なユーザー インターフェイスを作成します。

h = waitbar(0, 'Waiting...');

parfeval を使用して、乱数行列の固有値などの時間のかかる計算をワーカーで実行します。計算は非同期で実行され、計算中にユーザー インターフェイスが更新されます。parfevalparpool が作成されていなければ、自動的に既定の設定で作成します。

for idx = 1:100
  f(idx) = parfeval(@(n) real(eig(randn(n))), 1, 5e2); 
end

各計算が使用可能になったら、afterEach を使用してその最大値を計算します。各 Future が完了するたびに、afterEach を使用して、ウェイトバーに示される終了した Future の比率を更新します。

maxFuture = afterEach(f, @max, 1);
updateWaitbarFuture = afterEach(f, @(~) waitbar(sum(strcmp('finished', {f.State}))/numel(f), h), 1);

すべての計算が完了したら、ウェイトバーを閉じます。閉じる操作で自動的に続行するには、afterAllupdateWaitbarFuture に対して使用します。afterAll は Figure のハンドルを updateWaitbarFuture から取得し、その関数をハンドルに対して実行します。

closeWaitbarFuture = afterAll(updateWaitbarFuture, @(h) delete(h), 0);

すべての最大値を計算した後、ヒストグラムを表示します。操作を自動的に続行するには、afterAllmaxFuture に対して使用します。afterAllmaxFuture から最大値を取得し、それに対して histogram を呼び出します。

showsHistogramFuture = afterAll(maxFuture, @histogram, 0);

参考