In MATLAB, wie Sie einen Rückruf ausführen, während ein Schieberegler gezogen wird?
Habe ich einen MATLAB-GUI mit GUIDE. Ich habe einen slider mit einer callback-Funktion. Ich habe festgestellt, dass das callback, das soll ja auch die execute 'auf der slider-Bewegung', in der Tat läuft nur, sobald der regler verschoben wurde und die Maustaste losgelassen.
Gibt es einen Weg, um ein Skript auszuführen, während der Schieberegler gezogen wird, für die live-Aktualisierung der ein Grundstück? Da würde ich davon ausgehen muss, um etwas zu beenden das Skript ausgeführt wird, zu viele Male.
InformationsquelleAutor Bill Cheatham | 2011-05-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl der Rückruf der Schieberegler wird nicht aufgerufen, wenn die Maus bewegt wird, die
'Value'
Eigenschaft der regler uicontrol ist aktualisiert. Daher könnten Sie einen listener mitaddlistener
, die ausgeführt wird, eine gegebene callback, wenn die'Value'
- Eigenschaft ändert. Hier ist ein Beispiel:Als Sie den Schieberegler bewegen, sollten Sie sehen
'hi'
gedruckt, auf dem Bildschirm (die listener-callback), und wenn Sie die Maustaste loslassen, sehen Sie'hello'
gedruckt (die uicontrol Rückruf).@(s, e)
zu tun, bevor diedisp
Funktion? Ich denke, die@
schafft der Griff zu disp, aber was ist das(s, e)
?@(s,e)
erstellt ein anonyme Funktion, nimmt als input-Argumentes
unde
und führtdisp(...)
. Mit function handles als callbacks erfordert, dass die Funktion nimmt mindestens zwei Argumente, auch wenn Sie nicht verwendet werden. Diese Argumente sind das handle des Objekts ausgeben des Rückruf (s
) und die event-Daten bietet Optional (e
). Mehr beschreibenden Namen wärehObject
undeventData
, aber ich hielt es kurz.Nur für das Protokoll, dieses Thema ist ausführlich hier: http://UndocumentedMatlab.com/blog/continuous-slider-callback/ - mehrere alternative Lösungen werden dort vorgestellt. gnovice die Lösung mit
addlistener
entspricht derhandle.listener alternative
, daaddlistener
ist im Grunde nur ein wrapper für letzteres.Wenn Sie möchten, führen Sie die gleichen original-callback übergeben, um
uicontrol
können Sie dieses generische listener, startet die vorhandenen callback:Verwandte blog-post