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

2 views (last 30 days)
SHOHEI YAMASHITA
SHOHEI YAMASHITA on 10 Apr 2019
Commented: SHOHEI YAMASHITA on 11 Apr 2019
現在、外部機器にて音声データを収録(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
出力された行列が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!