我对matlab计时器对象有疑问。我的gui中有一个按钮,可以创建一个计时器,每个0.1的句号我想调用我的函数。
function playBtn_Callback(hObject, eventdata, handles)
global pl;
global c;
global g;
global t;
global myData;
if isplaying(pl)
pause(pl);
set(handles.playBtn, 'string', 'Play');
else
resume(pl);
set(handles.playBtn, 'string', 'Pause');
end
myData=guidata(handles.timertext);
c=get(pl, 'CurrentSample')
g=get(pl, 'TotalSample')
a = timer;
set(a, 'ExecutionMode', 'FixedRate');
set(a, 'TimerFcn', 'myFunction', 'Period', 0.1);
start(a);
function t = myFunction()
global mydata;
global pl;
global sf;
global mySong;
c=get(pl, 'CurrentSample')
set(mydata.timertext, 'String', c/sf);
sf是我歌曲的频率。
我得到的错误是:
计算定时器'timer-26'的TimerFcn时出错
未定义的函数或变量'myFunction'。
答案 0 :(得分:-1)
您需要传递'TimerFcn'值的函数句柄,而不是字符串。因为你的函数在你的UI文件中,所以它不能在外部访问(没有一些技巧),所以你必须传递一个实际的函数句柄而不是字符串。 (否则它将调用str2func并获取一个它无法使用的函数句柄。)
如果您不知道我在说什么,请阅读http://www.mathworks.co.uk/help/matlab/matlab_prog/creating-a-function-handle.html。
您还应该查看guidata函数的文档 - 不需要使用全局变量。