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.