¿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.

Respuestas a la pregunta(0)

Su respuesta a la pregunta