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-file 内にあるため、外部からアクセスすることはできません (ちょっとしたトリックがなければ)。そのため、文字列ではなく実際の関数ハンドルを渡す必要があります。(それ以外の場合は、str2func を呼び出して、使用できない関数ハンドルを取得します)。

何を言っているのかわからない場合は、http://www.mathworks.co.uk/help/matlab/matlab_prog/creating-a-function-handle.htmlを読んでください。

guidata 関数のドキュメントも参照してください。グローバル変数を使用する必要はありません。

于 2013-03-21T18:58:47.047 に答える