音声データからsignal duration,bandwidth,peak frequencyを抽出する方法
Show older comments
表題の件について,解決策をご存じの方がいらっしゃいましたら,ご回答いただけましたら幸いでございます.
以下,質問の詳細について述べさせていただきます.
現在,ある一つのパルス音のsignal duration,bandwidth,peak frequencyを抽出するために,以下のようなコードを書いています.
----------------------------------------------------------------------------------------------
wavファイルを読み込む
[wf, fs] = audioread(wavfile);
signal duration
n = length(wf);
sd = n./fs
帯域幅(‐3db)
bw = bandwidth(wf);
freq = [1:fs];
ピーク周波数
N=length(wf);
[freq_response,freq_index] = freqz(wf,1,N,fs); %N is the number of samples
pM = max(abs(freq_response)); %magnitude
pF = freq_index(abs(freq_response)==pM); %frequency
----------------------------------------------------------------------------------------------
おそらくpeak frequencyについては正しく出力できているのですが,signal durationとbandwidthのどちらか,あるいは両方が正しく出力されていないように思います.
理由は,出力された結果が「signal duration (ms) - bandwidth (kHz) × 2 = 0.002」という,一定の値になるからです.
例えば, bw=9554, sd=0.01911のようになり,「19.11 (ms) - 9.554 (kHz) × 2 = 0.002」といった具合です.
もし,コードのどこかに誤りがあるようでしたら,ご指摘いただければ幸いでございます.
また,そもそもsignal durationとbandwidthはこのような関係になるのか,あるいは,コードに誤りはなく,音声データに不具合があるのか,
といった点についても,ご教示いただけると幸いでございます.
お手数をおかけしますが,何卒よろしくお願いいたします.
Accepted Answer
More Answers (0)
Categories
Find more on 記述統計 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!