1

我有一个关于 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”。

4

1 回答 1

-1

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

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

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

于 2013-03-21T18:58:47.047 回答