GUIDE を使用して MATLAB GUI を作成しました。コールバック関数を備えたスライダーがあります。「スライダーの移動時」に実行されるはずのこのコールバックは、実際にはスライダーが移動されてマウスが離されたときにのみ実行されることに気付きました。
プロットのライブ更新のために、スライダーがドラッグされているときにスクリプトを実行する方法はありますか? スクリプトが何度も実行されるのを止めるために何かが必要だと思います。
GUIDE を使用して MATLAB GUI を作成しました。コールバック関数を備えたスライダーがあります。「スライダーの移動時」に実行されるはずのこのコールバックは、実際にはスライダーが移動されてマウスが離されたときにのみ実行されることに気付きました。
プロットのライブ更新のために、スライダーがドラッグされているときにスクリプトを実行する方法はありますか? スクリプトが何度も実行されるのを止めるために何かが必要だと思います。
マウスの移動時にスライダーのコールバックが呼び出されていなくても、スライダーの uicontrolの'Value'
プロパティが更新されています。したがって、プロパティが変更さaddlistener
れたときに特定のコールバックを実行するリスナーを作成できます。'Value'
次に例を示します。
hSlider = uicontrol('Style', 'slider', 'Callback', @(s, e) disp('hello'));
hListener = addlistener(hSlider, 'Value', 'PostSet', @(s, e) disp('hi'));
スライダーを動かす'hi'
と、画面に出力されます (リスナー コールバック)。マウスを離すと、'hello'
出力されます (uicontrol コールバック)。
記録のために、この主題はここで詳細に議論されています: http://UndocumentedMatlab.com/blog/continuous-slider-callback/ - いくつかの代替ソリューションがそこに提示されています。基本的には後者の単なるラッパーであるため、を使用するgnoviceのソリューションaddlistener
は と同等です。handle.listener alternative
addlistener