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.