如何在MATLAB中为audiorecorder对象使用函数回调('StopFcn','TimerFcn')?

时间:2012-05-09 16:31:05

标签: function matlab callback

我希望在录音期间通过audiorecorder对象执行'get_pitch(samples,fs,winsize,winshift)函数。为此,我发现'函数回调'会对此有所帮助。

所以我尝试使用此代码。

% assume fs,winsize,winshift is given.

T = 0.1; % in seconds
samples = cell{100,1};
r = audiorecorder(fs,16,1);
k=1;
r.TimerPeriod = 0.1;
r.StopFcn = 'samples{k} = getaudiodata(r);';
r.TimerFcn = {@get_pitch,samples{k},winsize,winshift};

while 1
     record(r,T);
     k=k+1;
end      

但执行期间发生以下异常。

1)执行记录(r,T)后。 (现在调用StopFcn) ???使用==>时出错EVAL 未定义的函数或变量'r'。

2)调用StopFcn后(现在调用TimerFcn) 在这个阶段,get_pitch函数有完全错误的参数。例如,参数 在位置中,样本{k}变为'audiorecorder对象'。

似乎我不知道确切使用'StopFcn'和& 'TimerFcn'。

有没有人可以给我一些建议?我非常感谢你的所有评论。

0 个答案:

没有答案