我试图将数字上可能输入的范围限制为' y'和' n'在Matlab中的while循环中。但是,下面的代码不起作用(至少我的理解)。
answ = get(fig, 'CurrentCharacter');
while answ ~= 'n' & answ ~= 'y'
answ = get(fig, 'CurrentCharacter');
end
如何实现理想的行为?只有第一个输入似乎被get捕获。当我显示变量时,循环就会永远持续下去,即使回答中的字符清楚地表示是' n'或者' y'并且随后的按键不会改变。此外,有时候数字会消失,输入将开始被终端捕获。 在命令窗口中执行代码似乎产生了所需的行为:
>> answ
answ = n
>> answ ~= 'n' & answ ~= 'y'
ans = 0
answ = x
>> answ ~= 'n' & answ ~= 'y'
ans = 1
答案 0 :(得分:0)
您不应该使用循环来侦听角色,而是使用数字回调! 例如:
fig = figure('KeyPressFcn',@Key_Down);
function Key_Down(src,event)
switch event.Character
case 'y'
disp('y')
case 'n'
disp('n')
end
end
'KeyPressFcn'是按下某个键时引发的事件,Matlab将调用您的Key_Down
函数。在event
结构中,您将找到Key,修饰符(Shift,CTRL等)和其他信息。