Ear*_*ess 9 matlab user-input keyboard-events
我有一个简单的问题,虽然它比看起来更难; 我无法在互联网上找到答案:O
我在Matlab写一个脚本.我想做的是以下内容:
我该怎么做呢?我怎么能对Matlab说:当我按esc时,这样做......
谢谢你们的时间!
编辑:没有选择实现等待按键的东西.我正在写一个驾驶汽车的脚本.它只需要基本上开车,但是当我按esc例如,它应该停止驾驶.所以脚本必须运行,直到我按下esc键; 然后脚本必须暂停.
KeyPressFcn很好,因为它迫使你编写事件驱动的代码.这通常是个好主意!但是,如果KeyPressFcn看起来适合你,比如不一样,如果你必须保持在一个循环中运行,而你只是想查询一键是否被按下,我发现这个解决方案埋在MATLAB网站:
get(gcf,'CurrentCharacter')
然后,您可以将此属性设置为空白,并根据需要进行轮询.例如:
finish=false;
set(gcf,'CurrentCharacter','@'); % set to a dummy character
while ~finish
  % do things in loop...
  % check for keys
  k=get(gcf,'CurrentCharacter');
  if k~='@' % has it changed from the dummy character?
    set(gcf,'CurrentCharacter','@'); % reset the character
    % now process the key as required
    if k=='q', finish=true; end
  end
end
这在2014b中对我有用.缺点是需要关注图形窗口以接收关键事件.
在 matlab 图中,您可以定义一个'KeyPressFcn'类似于您所要求的工作方式的 。
如果您在控制台中,则必须解决 matlab 是单线程的问题。基本上,您需要停止程序流程来检查按键情况。
顺便说一句 - 当你使用时,'KeyPressFcn'你需要暂停一些,以便 Matlab 检查是否发生了任何事情。
顺便说一句 - 我还应该在暂停期间添加 Matlab 不仅会读取您的按键 - 还会做一些内务处理,例如重绘其窗口等。
| 归档时间: | 
 | 
| 查看次数: | 27762 次 | 
| 最近记录: |