MATLAB R2020a中如何为input()设置超时自动选择功能?
实现带超时的MATLAB控制台输入(自动默认'n')
针对MATLAB R2020a版本,input函数本身不支持超时设置,且要避免弹出图形窗口的话,可通过while循环结合kbhit、tic/toc实现需求,以下是完整实现代码:
prompt = 'Do you say yes or no? y/n[n]: '; timeout = 10; % 设置超时时间(单位:秒) defaultChoice = 'n'; userChoice = defaultChoice; % 先打印提示信息 fprintf(prompt); startTime = tic; while toc(startTime) < timeout % 检测是否有按键输入 if kbhit() % 读取单个输入字符 inputChar = fscanf('%c', 1); % 判断输入内容 if strcmpi(inputChar, 'y') userChoice = 'y'; break; elseif strcmpi(inputChar, 'n') || strcmp(inputChar, char(10)) % 匹配'n'或回车键,直接用默认值 userChoice = defaultChoice; break; end end % 短暂暂停降低CPU占用 pause(0.1); end % 换行并输出结果 fprintf('\n'); disp(['最终选择:', userChoice]);
关键逻辑说明
- 用
fprintf手动输出提示,替代input的自动输出,方便配合按键检测逻辑 tic/toc计算时间差,判断是否到达超时时间kbhit()是MATLAB控制台的按键检测函数,无需图形窗口即可使用fscanf('%c',1)读取单个输入字符,回车键对应的ASCII码为char(10),需单独处理- 循环中加入
pause(0.1)避免CPU空转,可根据需求调整暂停时长 - 超时后自动使用预设的默认值
'n'
内容的提问来源于stack exchange,提问作者alpha
相关产品推荐
相关产品推荐

