MATLAB 中的 input() 函数有定时器吗?

alp*_*pha 4 matlab timer

下面的脚本等待用户按下某个键(“y”、“n”或任何其他字符)和/或 Enter 键:

prompt = 'Do you say yes or no? y/n[n]: ';
txt = input(prompt,'s');
Run Code Online (Sandbox Code Playgroud)

n但是,我喜欢它在一段时间(例如 10 或 20 秒)后自动选择,而不是无限期地等待。

我正在查看这篇文章(设置用户输入的时间限制),get(gcf, 'CurrentCharacter'); 打开了一个我不喜欢的图形窗口。

有没有办法为input()函数设置计时器,或者是否有其他方法来获取用户输入(例如,我可以使用 while 循环和pause())?


我正在使用 MATLAB R2020a

Byt*_*nja 5

您可以创建一个timer()在指定持续时间后执行的函数,并在该函数中模拟按键事件:

duration = 10; % sec
t = timer('StartDelay', duration, 'TimerFcn', @timeFunc);
prompt = 'Do you say yes or no? y/n[n]: ';
start(t);
txt = input(prompt,'s');
stop(t);
delete(t);
if isempty (txt), txt = 'n'; end

% Simulate the Enter keypress
function timeFunc(~, ~)
    robot = java.awt.Robot;
    robot.keyPress(java.awt.event.KeyEvent.VK_ENTER);
    robot.keyRelease(java.awt.event.KeyEvent.VK_ENTER);
end
Run Code Online (Sandbox Code Playgroud)

  • 好的!我正想发这个。也许添加 `if isempty (txt), txt = 'n'; end` 在末尾,所以 `txt` 的默认值是 `'n'`? (3认同)