我希望在录音期间通过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'。
有没有人可以给我一些建议?我非常感谢你的所有评论。