audiorecorderのcallback関数

3 次查看(过去 30 天)
Akira
Akira 2019-11-28
回答: Shoumei 2019-12-2
recordの例に習って下のように10秒録音するプログラムを書いたのですが、明らかに10秒立たずにStopFcnが始動しました。StopFcnとはrecordが終わって呼び出される関数と言う認識は違うのでしょうか?
function Record0()
Fs = 44100;
T = 10;
sound = audiorecorder(Fs, 8, 1, 0);
sound.StartFcn = 'disp("Start recording.")';
sound.StopFcn = 'disp("Stop recording.")';
record(sound, T);
end

回答(1 个)

Shoumei
Shoumei 2019-12-2
10秒ってどうやって測りました?
正確性を期するため、tic, tocという関数を使ってstart/stop間の時間を計測してみました。
s1 = audiorecorder(Fs, 8, 1, 0);
s1.StartFcn = 'tic,disp("Start recording.")';
s1.StopFcn = 'disp("Stop recording.");toc';
record(s1, T);
経過時間は 10.580585 秒です。
経過時間は 10.463242 秒です。
と、2回の実行は概ね10秒程度で終わっています。(表示などのオーバーヘッドがあるので10秒ちょっとかかります。)
また、s1.TotalSamplesを確認してみましたが、10秒間のサンプル数である441000サンプルのデータが取得できていました。
余談ですが、soundという関数があって競合するので、これを変数にするのは適切ではありません。s1に変更しました。

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!