wavelet波形を3次元にする際,X軸を時間に変更する方法を教えてください。
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Ryosuke Takahashi
il 12 Lug 2017
Modificato: Ryosuke Takahashi
il 13 Lug 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
0 Commenti
Risposta accettata
Tohru Kikawada
il 12 Lug 2017
X軸の表示を時間にしたいということでしょうか。
表示だけであれば mesh に軸のラベルデータを指定することで実現できます。
mesh(time,fa,abs(CWTcoeffs));
3 Commenti
Tohru Kikawada
il 13 Lug 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
Più risposte (0)
Vedere anche
Categorie
Scopri di più su 連続ウェーブレット変換 in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!