Ich habe eine einfache Frage, obwohl es schwerer ist als es scheint; Ich konnte die Antwort auf die Interwebs nicht finden: O
Ich schreibe ein Skript in Matlab. Was ich machen möchte, ist folgendes:
Wie mache ich das? Wie kann ich zu Matlab sagen: Wenn ich esc drücke, mache das ...
Danke für Ihre Zeit Leute!
EDIT: Es ist keine Option etwas zu implementieren, das den Tastendruck erwartet. Ich schreibe ein Drehbuch für ein fahrendes Auto. Es muss einfach herumfahren, aber wenn ich zB esc drücke, sollte es aufhören zu fahren. Das Skript muss also nur laufen, bis ich die Esc-Taste drücke. dann muss das Skript anhalten.
In einer Matlab-Figur können Sie ein 'KeyPressFcn'
definieren, das ähnlich funktioniert wie das, was Sie fragen.
Wenn Sie in der Konsole sind, müssen Sie umgehen, dass Matlab single threaded ist. Grundsätzlich müssen Sie den Programmablauf anhalten, um nach Tastendrücken zu suchen.
btw - auch wenn Sie 'KeyPressFcn'
verwenden, müssen Sie einige Pausen machen, damit Matlab überprüft, ob etwas passiert ist.
btw2 - Ich sollte auch hinzufügen, dass Matlab während dieser Pausen nicht nur die Tasten drücken wird, sondern auch ein paar Dinge verwalten, wie das Fenster neu zeichnen und so weiter.
KeyPressFcn
ist gut, da Sie gezwungen sind, ereignisgesteuerten Code zu schreiben. Was im Allgemeinen eine gute Idee ist! Wenn KeyPressFcn
jedoch nicht für Sie geeignet erscheint, beispielsweise wenn Sie in einer Schleife weiterlaufen müssen und Sie nur pollen überprüfen möchten, ob eine Taste gedrückt wurde, habe ich diese Lösung gefunden auf der Matlab-Website:
Dann könnten Sie diese Eigenschaft auf ein leeres Feld setzen und nach Bedarf abfragen. z.B.:
%Vor%Das hat 2014 für mich gut funktioniert. Der Nachteil ist, dass das Grafikfenster auf die Schlüsselereignisse fokussiert werden muss.
Ich habe häufig ähnliche Anwendungsfälle kennengelernt und reagierte in der Regel lieber auf Joystick-Schaltflächen, weil vrjoystick eine bequemere Schnittstelle bietet. Kürzlich habe ich jedoch eine Bibliothek geschrieben, die eine ähnliche Schnittstelle für Tastatureingaben bietet.
%Vor%Es ist nicht blockierend und erfordert keine Konzentration auf eine bestimmte Figur.
Dateiaustausch: Ссылка
Github: Ссылка
Ich hatte einmal eine verwandte Aufgabe, und ich tat es mit getkey
Formular Matlab-Dateiaustausch .
Grundsätzlich möchten Sie es für ASCII 1B (27 dezimal) hören lassen
Wenn getkey
dein Problem nicht löst, kannst du immer noch seinen Code ansehen und vielleicht die Zeile finden, die dir den Spaß macht.
Tags und Links matlab keyboard-events user-input