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

現在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)

 채택된 답변

Shunichi Kusano
Shunichi Kusano 2020년 10월 5일

0 개 추천

こんにちは
まず、予想と違う結果になる理由は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

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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 連続ウェーブレット変換에 대해 자세히 알아보기

질문:

2020년 10월 5일

댓글:

2020년 10월 11일

Community Treasure Hunt

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

Start Hunting!