2

我想在通过录音机对象录制期间执行函数'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) 在record(r,T) 执行之后。(现在称为 StopFcn)???使用 ==> eval 未定义函数或变量 'r' 时出错。

2) StopFcn 调用后(现在调用TimerFcn) 在这个阶段,get_pitch 函数的参数完全错误。例如,位置 samples{k} 中的参数更改为“audiorecorder object”。

看来我不知道“StopFcn”和“TimerFcn”的确切用法。

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

4

0 回答 0