MATLAB:如何运行函数直到释放键?

MATLAB:如何运行函数直到释放键?,matlab,keypress,keyrelease,Matlab,Keypress,Keyrelease,我有一个GUI,我想重复一些过程,从按下给定的键到释放键 我知道当按键时如何进行一次处理。但是有没有办法,比如说,在释放钥匙之前,每秒显示一次随机数 谢谢你的回答。 Jaja您可以将计时器连接到您的体形上,用键按FCN启动计时器,然后用键释放FCN停止计时器 下面的示例将创建一个图形,只要按下f键,就会在控制台中显示一个随机数 function h=keypressdemo h.fig = figure ; %// set up the timer h.t = timer ; h.t.Per

我有一个GUI,我想重复一些过程,从按下给定的键到释放键

我知道当按键时如何进行一次处理。但是有没有办法,比如说,在释放钥匙之前,每秒显示一次随机数

谢谢你的回答。
Jaja

您可以将计时器连接到您的体形上,用
键按FCN
启动计时器,然后用
键释放FCN
停止计时器

下面的示例将创建一个图形,只要按下f键,就会在控制台中显示一个随机数

function h=keypressdemo

h.fig = figure ;

%// set up the timer
h.t = timer ;
h.t.Period = 1 ;
h.t.ExecutionMode = 'fixedRate' ;
h.t.TimerFcn = @timer_calback ;

%// set up the Key functions
set( h.fig , 'keyPressFcn'   , @keyPressFcn_calback ) ;
set( h.fig , 'keyReleaseFcn' , @keyReleaseFcn_calback ) ;

guidata( h.fig ,h)

function timer_calback(~,~)
    disp( rand(1) )

function keyPressFcn_calback(hobj,evt)
    if strcmp(evt.Key,'f')
        h = guidata(hobj) ;
        %// necessary to check if the timer is already running
        %// otherwise the automatic key repetition tries to start
        %// the timer multiple time, which produces an error
        if strcmp(h.t.Running,'off')
            start(h.t)
        end
    end

function keyReleaseFcn_calback(hobj,evt)
    if strcmp(evt.Key,'f')
        h = guidata(hobj) ;
        stop(h.t)
    end

这是一个简单的计时器模式,回调函数所花费的时间比间隔要短得多,因此这里没有问题。如果您希望任何函数在完成后立即重新执行自身(类似于无限循环),您可以通过更改计时器的
executionmode
来设置它(阅读文档中的示例)。

但是,请注意,如果回调永久执行并使用所有(matlab唯一的)thread ressource,您的GUI可能会变得不太灵敏。

嗨!我为我们建立了一个MATLAB聊天室,以防您想讨论与MATLAB相关的任何话题,或者如果您想讨论的内容超过一个评论块。有时间请过来!