我想在MATLAB中创建一个可以接受不同参数的函数,比如计时器。像
这样的东西function timercommand(arg)
if arg == go
for t = 1:100
pause (1)
if arg == stop
...
这样的事情。但我希望能够称之为:timercommand(go)
然后打电话给timercommand(stop)
。但我真的不知道该怎么做。
我需要该函数能够向下计数到0.如果它达到零,它应该将自己设置为“已停止”并且我必须能够识别它已经完成了。
我还需要能够自己停止倒计时,以防止它激活我想与此功能一起使用的其他功能。
作为我正在尝试的示例(仅使用示例),我想在我的计算机上发出重新启动。如果我没有回复或有足够的时间停止重启,我需要在一定时间内重启。
希望这使我的问题更容易理解。抱歉有任何困惑!
答案 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)。
如果你用更多细节描述你的问题,也许有人会帮助你。
祝你好运!