Jak mogę użyć funkcji callback ('StopFcn', 'TimerFcn') dla obiektu audiorecorder w MATLAB?

Chcę wykonać funkcję 'get_pitch (samples, fs, winsize, winshift)' podczas nagrywania przez obiekt audiorecorder. Aby to zrobić, odkryłem, że pomocna będzie funkcja „wywołanie zwrotne funkcji”.

Więc próbuję tego kodu.

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

Ale następujący wyjątek występuje podczas wykonywania.

1) po wykonaniu rekordu (r, T). (StopFcn jest teraz nazywany) ??? Błąd przy użyciu ==> eval Niezdefiniowana funkcja lub zmienna „r”.

2) po wywołaniu StopFcn (teraz wywoływany jest TimerFcn) W tej fazie funkcja get_pitch ma całkowicie błędne parametry. Na przykład parametr w próbkach pozycji {k} zmienia się na „obiekt audiorecorder”.

Wydaje się, że nie znam dokładnego użycia „StopFcn” i „TimerFcn”.

Czy jest ktoś, kto może udzielić mi rady? Naprawdę doceniam wszystkie twoje komentarze.

questionAnswers(0)

yourAnswerToTheQuestion