¿Cómo puedo usar la función de devolución de llamada ('StopFcn', 'TimerFcn') para el objeto audiorecorder en MATLAB?
Quiero ejecutar la función 'get_pitch (samples, fs, winsize, winshift)' durante la grabación a través del objeto de la grabadora de audio. Para hacer eso, encontré que 'función de devolución de llamada' sería útil para hacer eso.
Así que intento este 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>
Pero la siguiente excepción ocurre durante la ejecución.
1) Después de que se ejecuta el registro (r, T). (StopFcn ahora se llama) ??? Error al utilizar ==> eval Función o variable no definida 'r'.
2) después de llamar a StopFcn (ahora se llama TimerFcn) En esta fase, la función get_pitch tiene parámetros totalmente erróneos. Por ejemplo, los parámetros en las muestras de posición {k} cambian a 'objeto de grabadora de audio'.
Parece que no conozco el uso exacto de 'StopFcn' y 'TimerFcn'.
¿Hay alguien que me pueda dar algún consejo? Realmente aprecio todos sus comentarios.