Вопрос по callback, matlab, function – Как я могу использовать функцию обратного вызова (StopFcn, TimerFcn) для объекта аудиорекордера в MATLAB?

2

Я хочу выполнить функцию "get_pitch (samples, fs, winsize, winshift)" & apos; во время записи через аудиорекордер Для этого я обнаружил, что «функция обратного вызова» было бы полезно сделать это.

Поэтому я пытаюсь этот код.

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

Но следующее исключение происходит во время исполнения.

1) после выполнения записи (r, T). (Теперь называется StopFcn) ??? Ошибка при использовании == & gt; Eval Неопределенная функция или переменная "r".

2) после вызова StopFcn (теперь вызывается TimerFcn) На этом этапе функция get_pitch имеет совершенно неверные параметры. Например, параметр в позициях выборки {k} изменяют на «объект аудиорекордера».

Кажется, что я не знаю точного использования «StopFcn» & Амп; & APOS; TimerFcn & APOS ;.

Есть кто-нибудь, кто может дать мне совет? Я действительно ценю все ваши комментарии.

StopFcn должно быть@(events, data) eval('samples{k} = getaudiodata(r);');, Я думаю. Dang Khoa

Ваш Ответ

0   ответов

Похожие вопросы