How do I write a loop in MATLAB that continues until the user presses any key?

125 vues (au cours des 30 derniers jours)
I want to run a specific routine in a loop. However I want the user to be able to exit the loop and end the routine by pressing any key on the keyboard.

Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 5 Fév 2010
MATLAB does not have a function that scans for keyboard activity without interrupting the event stream.
However, if your program involves a figure window, you can utilize the ‘KeyPressFcn’ property. The 'KeyPressFcn' is called when a key is pressed with an active figure window. You can set this function to change the state of a flag that ends a loop. Copy the following functions to a MATLAB file, and execute the MATLAB file.
function myLoopingFcn()
global KEY_IS_PRESSED
KEY_IS_PRESSED = 0;
gcf
set(gcf, 'KeyPressFcn', @myKeyPressFcn)
while ~KEY_IS_PRESSED
drawnow
disp('looping...')
end
disp('loop ended')
function myKeyPressFcn(hObject, event)
global KEY_IS_PRESSED
KEY_IS_PRESSED = 1;
disp('key is pressed')
The code will display "looping" in the MATLAB Command Window until a key is pressed when the figure window is active.

Plus de réponses (1)

Xingwang Yong
Xingwang Yong le 19 Août 2021
A version uses nested function instead of global variable
function myLoopingFcn2()
KEY_IS_PRESSED = 0;
gcf
set(gcf, 'KeyPressFcn', @myKeyPressFcn)
while ~KEY_IS_PRESSED
drawnow
disp('looping...')
end
disp('loop ended')
function myKeyPressFcn(hObject, event)
KEY_IS_PRESSED = 1;
disp('key is pressed')
end
end

Catégories

En savoir plus sur Desktop dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by