wavelet波形を​3次元にする際,X軸​を時間に変更する方法​を教えてください。

1 view (last 30 days)
Ryosuke Takahashi
Ryosuke Takahashi on 12 Jul 2017
Edited: Ryosuke Takahashi on 13 Jul 2017
wavelet波形を3次元にする際,X軸を時間に変更する方法を教えていただけないでしょうか?
現在,sin波のモデル波形に対してwavelet変換を行っています。 CWTcoeffsを使用して2次元の図を作成するまではx軸を時間に変更できるのですが, 3次元にする際には規定をする必要があるのでしょうか?
fs=1000; t = 0:1/fs:2-1/fs;
S1 = sin(2*pi*20*t)+sin(2*pi*100*t);
time = (1:fs*2)/fs;
figure(1);
subplot(2,1,1);
plot(time,S1);
subplot(2,1,2);
wname = 'morl';
fc = centfrq(wname); % 中心周波数
fa = 1:200; % 擬似周波数(Hz)
scal2frq(200,wname,1/fs)%周波数分解能
sf = fc./(fa.*1/fs); % スケールファクタ
[CWTcoeffs,frq] = cwt(S1,sf,wname,1/fs);
abs_CWT = abs(CWTcoeffs);
imagesc(time,fa,abs_CWT);
colormap(jet)
axis xy
axis([0,inf, -inf, 200])
title('Scalogram')
ylabel('Hz')
colorbar
figure(2);
mesh(abs(CWTcoeffs));
colormap(jet)
colorbar

Accepted Answer

Tohru Kikawada
Tohru Kikawada on 12 Jul 2017
X軸の表示を時間にしたいということでしょうか。
表示だけであれば mesh に軸のラベルデータを指定することで実現できます。
mesh(time,fa,abs(CWTcoeffs));
  3 Comments
Tohru Kikawada
Tohru Kikawada on 13 Jul 2017
掲載されているコードを実行したところ、 time 変数のサイズは 1x2000 のようです。
>> size(time)
ans =
1 2000
単純に mesh の引数を変えただけで私の環境では表示できました。
サンプリング周波数も1000Hzとありますが何か条件が異なっていますか。
fs=1000; t = 0:1/fs:2-1/fs;
S1 = sin(2*pi*20*t)+sin(2*pi*100*t);
time = (1:fs*2)/fs;
figure(1);
subplot(2,1,1);
plot(time,S1);
subplot(2,1,2);
wname = 'morl';
fc = centfrq(wname); % 中心周波数
fa = 1:200; % 擬似周波数(Hz)
scal2frq(200,wname,1/fs)%周波数分解能
sf = fc./(fa.*1/fs); % スケールファクタ
[CWTcoeffs,frq] = cwt(S1,sf,wname,1/fs);
abs_CWT = abs(CWTcoeffs);
imagesc(time,fa,abs_CWT);
colormap(jet)
axis xy
axis([0,inf, -inf, 200])
title('Scalogram')
ylabel('Hz')
colorbar
figure(2);
mesh(time,fa,abs(CWTcoeffs));
colormap(jet)
colorbar
Ryosuke Takahashi
Ryosuke Takahashi on 13 Jul 2017
Edited: Ryosuke Takahashi on 13 Jul 2017
申し訳ありません。
ワークスペースをクリアして確認したところ,問題ありませんでした。
この度はありがとうございました。

Sign in to comment.

More Answers (0)

Tags

Products

Community Treasure Hunt

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

Start Hunting!