CWT関数により表示​されるウェーブレット​のグラフからデータを​取り出す方法について

10 views (last 30 days)
Suguru
Suguru on 1 Feb 2019
Answered: Shoumei on 4 Feb 2019
CWT関数を用いてウェーブレット変換を行い表示されるグラフから特定の範囲(周波数と時間)の強度のデータを取り出して保存する方法を教えてください。データカーソルを用いて選択した領域のデータをすべて保存できるでしょうか?

Answers (1)

Shoumei
Shoumei on 4 Feb 2019
MATLAB関数の多くは出力が無いとグラフィックス表示し、あると変数代入するようになっています。
CWT関数も出力引数を与えてやって、そのデータから所望の範囲を抽出すればよいと思います。
以下例です。
Fs = 44100;
t = 0:1/Fs:1;
x = chirp(t, 100, 1, 4000, 'quadratic'); % チャープ信号生成
[coefs,frq] = cwt(x, Fs);
% 可視化
figure,surface(t,frq,abs(coefs))
axis tight, shading flat
xlabel('Time (s)'), ylabel('Frequency (Hz)'), set(gca,'yscale','log')
Wv1.jpg
% 一部の区間を抽出
indx_t = (t>0.5)&(t<0.7); % 時間0.5-0.7
t2 = t(indx_t);
indx_f = (frq>1000)&(frq<2000); % 周波数1k-2k
frq2 = frq(indx_f);
coefs2 = coefs(indx_f, indx_t);
% 可視化
figure,surface(t2,frq2,abs(coefs2))
axis tight, shading flat
xlabel('Time (s)'), ylabel('Frequency (Hz)'), set(gca,'yscale','log')
Wv2.jpg
配列から一部の要素を抽出する方法はドキュメントのこのあたりが参考になるのでは。

Community Treasure Hunt

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

Start Hunting!