Como posso usar o retorno de chamada de função ('StopFcn', 'TimerFcn') para o objeto audiorecorder no MATLAB?

Eu quero executar a função 'get_pitch (samples, fs, winsize, winshift)' durante a gravação através do objeto audiecorder. Para fazer isso, descobri que 'retorno de chamada de função' seria útil para fazer isso.

Então eu tento esse código.

<code>% 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      
</code>

Mas a seguinte exceção ocorre durante a execução.

1) após o registro (r, T) ser executado. (StopFcn agora é chamado) ??? Erro ao usar ==> eval Função indefinida ou variável 'r'.

2) depois que StopFcn é chamado (TimerFcn é agora chamado) Nesta fase, a função get_pitch tem parâmetros totalmente errados. Por exemplo, o parâmetro nos exemplos de posição {k} muda para 'audiorecorder object'.

Parece que eu não sei o uso exato de 'StopFcn' e 'TimerFcn'.

Existe alguém que possa me dar algum conselho? Eu realmente aprecio todos os seus comentários.

questionAnswers(0)

yourAnswerToTheQuestion