MATLAB:暂停程序并等待按键

Cap*_*rog 7 matlab keypress

我正在编写一个程序,在某个程序中绘制图形并在屏幕上显示.然后,用户需要按'y'或'n'接受或拒绝图表.我目前的解决方案使用PsychToolbox(实际解决方案不需要),其中包括一个名为'KbCheck'的命令,该命令在调用所有键盘按钮的状态时进行检查.我的代码看起来像这样:

function [keyPressed] = waitForYesNoKeypress
keyPressed = 0; % set this to zero until we receive a sensible keypress
while keyPressed == 0 % hang the system until a response is given
    [ keyIsDown, seconds, keyCode ] = KbCheck; % check for keypress
    if find(keyCode) == 89 | find(keyCode) == 78 % 89 = 'y', 78 = 'n'
        keyPressed = find(keyCode);
    end
end
Run Code Online (Sandbox Code Playgroud)

问题是,在按下某个键之前,系统确实会"挂起".理想情况下,我可以滚动,缩放,并且通常与屏幕上绘制的图形进行交互,这样我就可以真正决定是否要按'y'或'n'!

我试过添加'drawnow;' 进入上面的while循环,但这不起作用:我接受或拒绝它们之前,我仍然无法与绘制的图形进行交互.

解决方案不必使用PsychToolbox; 我假设还有很多其他选择吗?

谢谢

Chr*_*lor 6

我用的是这个input功能:

a = input('Accept this graph (y/n)? ','s')

if strcmpi(a,'y')
    ...
else
    ...
end
Run Code Online (Sandbox Code Playgroud)

虽然不可否认它需要两个按键(y然后是Enter)而不是一个.


Oli*_*Oli 5

为什么不使用waitforbuttonpress呢?

文档:http://www.mathworks.fr/help/techdoc/ref/waitforbuttonpress.html


pat*_*rik 5

等待按钮打开一个数字,这可能是不需要的.请改用

pause('on');
pause;
Run Code Online (Sandbox Code Playgroud)

让用户暂停直到按下一个键.