cwt変換後に作成さ​れる行列の、各行と周​波数との関係性

現在、外部機器にて音声データを収録(Fs:50kHz,t=10s)し
waveファイルとしてmatlabに取り込み、行ベクトルに変換後、cwtを行っています。
結果は指定のファイル(wavelet_wave_1)に格納しています。
[y1,Fs1]=audioread(filename1);%waveファイルの読み込み
detrend_y1=detrend(y1);%直流成分除去
yy1=detrend_y1(1:500000,1)';%10秒間だけ切り出し
[wavelet_wave_1,f1]=cwt(yy1,50000);%連続ウェーブレット変換
出力された行列は161×500000のサイズとなっており、
列サイズはFs×tとなるのは分かるのですが、
161行の各行が、どの周波数帯に対応しているのかが分かりません。
1行目:25000Hzから始まり、10行ごとに1オクターブ下がるのでしょうか?
回答よろしくお願いします。

 Accepted Answer

Shoumei
Shoumei on 11 Apr 2019

0 votes

出力された行列が161x500000となっているということですが、その161行が周波数軸に相当します。500000列が時間軸方向のデータです。
各行が何Hzとなっているかは変数f1に入っています。マザーウェーブレットが異なると周波数軸データf1も異なります。
以下コードで表示できますよ。
t = (0:numel(yy1)-1)/Fs1; % 時間軸データを作成
[wavelet_wave_1,f1]=cwt(yy1,Fs1);%連続ウェーブレット変換
surface(t, f1, abs(wavelet_wave_1))

1 Comment

SHOHEI YAMASHITA
SHOHEI YAMASHITA on 11 Apr 2019
行列f1を確認したところ、確かに入っておりました!
解決しました。
プログラムの表記まで、ありがとうございます。

Sign in to comment.

More Answers (0)

Products

Release

R2017a

Community Treasure Hunt

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

Start Hunting!