Matlab计时器未定义的函数或变量

时间:2013-03-21 18:56:14

标签: function matlab audio callback

我对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'。

1 个答案:

答案 0 :(得分:-1)

您需要传递'TimerFcn'值的函数句柄,而不是字符串。因为你的函数在你的UI文件中,所以它不能在外部访问(没有一些技巧),所以你必须传递一个实际的函数句柄而不是字符串。 (否则它将调用str2func并获取一个它无法使用的函数句柄。)

如果您不知道我在说什么,请阅读http://www.mathworks.co.uk/help/matlab/matlab_prog/creating-a-function-handle.html

您还应该查看guidata函数的文档 - 不需要使用全局变量。