Calling timer function from within another function
조회 수: 3 (최근 30일)
이전 댓글 표시
I want to use the timer function within another function. Moreover, it must have access to the values of variables within that function in order for its callback commands to execute. However, the timer function always works in the base workspace, even if called from a function (which seems extremely counterintuitive, but there it is). So, how do I allow it to know about the variables within the function it's being called from? For e.g., the following function doit should display 2 every second for 5 seconds, but it won't because the timer executes in the base workspace and x is not present in that workspace. (Also, I want to avoid having to explicitly assign a copy of x in the base workspace from within the function doit, such as by using the assignin command - there should be a better way to do it than that.)
function doit
x=2;
t=timer('TimerFcn', 'x', 'ExecutionMode', 'fixedRate', 'Period', 1);
start(t)
pause(5)
stop(t)
delete(t)
댓글 수: 0
답변 (3개)
Paulo Silva
2011년 6월 29일
function doit
x=2;
t=timer('TimerFcn', @fun, 'ExecutionMode', 'fixedRate', 'Period', 1);
function fun(obj,event)
x
end
start(t)
pause(5)
stop(t)
delete(t)
end
댓글 수: 2
Walter Roberson
2011년 6월 29일
Or very nearly equivalently:
function doit
x=2;
t = timer('TimerFcn', @(obj,event) x, 'ExecutionMode', 'fixedRate', 'Period', 1);
start(t)
pause(5)
stop(t)
delete(t)
end
Giles
2011년 7월 1일
댓글 수: 1
Paulo Silva
2011년 7월 1일
Not that arbitrary, please read the documentation so you can better understand
doc function_handle
참고 항목
카테고리
Help Center 및 File Exchange에서 Whos에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!