連続ウェーブレット解析についての質問(初心者)

現在MATLABのサイトに載っているウェーブレット解析のプログラム(https://jp.mathworks.com/help/wavelet/gs/continuous-wavelet-analysis.html)を試しています。
上記のスクリプトをコピーアンドペーストし、実行するとサイト通りの結果が出力されたのですが、同じ要領で以下を実行しても理論通りの結果が出力されないのですがどうすれば良いでしょうか。
やはりFsやtの刻み幅が関係しているのでしょうか。また、cwtのグラフのx軸がmsになってしまうのですが、yearやdayに変更はできますでしょうか。拙い文章で申し訳ありませんがぜひお聞きしたいです。宜しくお願い致します。
Fs = 1000;
t = linspace(0,100,100);
y = cos(2*pi*100*t);
plot(t,y)
xlabel('Time (s)')
ylabel('Amplitude')
figure
cwt(y,Fs)

 Respuesta aceptada

Shunichi Kusano
Shunichi Kusano el 5 de Oct. de 2020

0 votos

こんにちは
まず、予想と違う結果になる理由はtがサンプリング周波数を満たしていないからです。できたtのサンプリング周波数(周期)を確認してみてください。
xlabelはcwtでは自動で出てしまうので任意の物に設定したい場合、いったんcwt変数から出力結果を出しておいて、自分でそれを表示するのがいいかと思います。
サンプルを置いておきますね
Fs = 1; % day
t = linspace(0,365,366);
y = cos(2*pi*0.1*t); % 周波数0.1[回/day]
plot(t,y);
xlabel('Time [day]')
ylabel('Amplitude')
figure
[cfs, freq] = cwt(y,Fs);
surface(t,freq,abs(cfs));
shading flat
xlabel('Time [day]')
ylabel('Frequency [day^{-1}]')
set(gca, 'yscale', 'log')
axis tight

5 comentarios

Katsumi Sato
Katsumi Sato el 5 de Oct. de 2020
ご丁寧にありがとうございます!
xlabelの件かしこまりました!
t,Fsについてですがtの刻み幅が1/Fsの必要があるという事でしょうか?
たびたび申し訳ございません。
Shunichi Kusano
Shunichi Kusano el 5 de Oct. de 2020
大急ぎで書いたので、サンプリングのところわけわからない文になってましたね。すみません。
刻み幅については、サンプリング定理を満たす必要があります。今回でいうとcos(2*pi*100*t)なので信号自体の周波数は100Hzです。なので最低でもサンプリング周波数は200Hz必要です。私の例では10倍としています。
Katsumi Sato
Katsumi Sato el 8 de Oct. de 2020
返信遅れてごめんなさい。サンプリング周波数は最低2倍必要という事でしょうか。何度も申し訳ありません。
Shunichi Kusano
Shunichi Kusano el 9 de Oct. de 2020
そのとおりです。
このあたりはデジタル信号処理の基礎なので、勉強しておいた方がいいと思います。有名な定理なのでWeb上でもいくつも解説記事を見つけることができます。個人的に読みやすいのはやるおシリーズです。
ご参考まで。
Katsumi Sato
Katsumi Sato el 11 de Oct. de 2020
ご丁寧にありがとうございます!拝見させていただきます。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 5 de Oct. de 2020

Comentada:

el 11 de Oct. de 2020

Community Treasure Hunt

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

Start Hunting!