试图在MATLAB中创建一个可以在

时间:2015-07-17 07:39:03

标签: matlab timer

我想在MATLAB中创建一个可以接受不同参数的函数,比如计时器。像

这样的东西
function timercommand(arg)    
if arg == go    
for t = 1:100    
    pause (1)    
    if arg == stop    
    ...

这样的事情。但我希望能够称之为:timercommand(go) 然后打电话给timercommand(stop)。但我真的不知道该怎么做。

我需要该函数能够向下计数到0.如果它达到零,它应该将自己设置为“已停止”并且我必须能够识别它已经完成了。

我还需要能够自己停止倒计时,以防止它激活我想与此功能一起使用的其他功能。

作为我正在尝试的示例(仅使用示例),我想在我的计算机上发出重新启动。如果我没有回复或有足够的时间停止重启,我需要在一定时间内重启。

希望这使我的问题更容易理解。抱歉有任何困惑!

3 个答案:

答案 0 :(得分:2)

只需使用timer - 对象即可。它已经完全符合您的要求。以下是使用start(T)启动计时器并使用stop(T)停止计时器的示例。注释 stop - 命令以测试行为。在我们启动计时器之前,我们必须设置一些参数,例如StartDelay等待的时间(这里是5秒)和定时器完成后调用的TimerFcn

function TimerMain
    T = timer;                          % Create a timer object
    set(T,'StartDelay',5);              % Specify the time to wait
    set(T,'TimerFcn',@TimerCallback);   % Assign a callback-function

    start(T);                           % Start the timer

    %stop(T);                            % Stop the timer
    %delete(T);                          % Delete the object if no longer needed
end      

function TimerCallback(~,~)             % Gets called when timer is done
    disp('Reboot in progress!');
end

请注意,您可以在拨打set时直接分配这些命令,而不是使用timer - 命令:T = timer('StartDelay',5,'TimerFcn',@TimerCallback);

答案 1 :(得分:0)

我会做这样的事情(t的定义,计时器,在主函数之外,所以如果你在matlab中复制并粘贴它将无法工作,但你应该用你的程序的其余部分定义) :

t = timer('TimerFcn', 'stat=false; disp(''Timer!'')',... 
                 'StartDelay',1);

function timercommand(arg)
switch arg
    case 'go'
        start(t)
    case 'stop'
        stop(t)
end  

我希望这有帮助!

答案 2 :(得分:0)

当您调用您的函数timercommand(arg)时,您已退出主要功能,而当您的timercommand正在运行时,您的主要功能将在同一点上。如果您使用命令arg == stop,则您的代码仅在timercommand(arg)之后才会生效。 答案取决于您想要的结果。 例如,对于两次单击按钮之间的测量时间,您可以使用事件处理程序(http://www.mathworks.com/help/matlab/matlab_external/using-events.html#responsive_offcanvas)。 如果你用更多细节描述你的问题,也许有人会帮助你。 祝你好运!