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

4 次查看(过去 30 天)
Ryosuke Takahashi
Ryosuke Takahashi 2017-7-12
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

采纳的回答

Tohru Kikawada
Tohru Kikawada 2017-7-12
X軸の表示を時間にしたいということでしょうか。
表示だけであれば mesh に軸のラベルデータを指定することで実現できます。
mesh(time,fa,abs(CWTcoeffs));
  3 个评论
Tohru Kikawada
Tohru Kikawada 2017-7-13
掲載されているコードを実行したところ、 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 2017-7-13
编辑:Ryosuke Takahashi 2017-7-13
申し訳ありません。
ワークスペースをクリアして確認したところ,問題ありませんでした。
この度はありがとうございました。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 離散多重解像度解析 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!