短時間フーリエ変換の解析方法について

10 views (last 30 days)
Ryosuke Takahashi
Ryosuke Takahashi on 25 Jul 2017
Commented: Ryosuke Takahashi on 25 Jul 2017
短時間フーリエ変換について質問させていただきます。
フーリエ解析を行い、周波数が変化した時間とパワー変化を知りたいです。
今回モデル波形として、0.5Hz 1Hz 2Hz のsin波を用いてフーリエ解析を行ったところ、 広範囲に同じパワーの分布が見られました。 僕のイメージでは0.5Hz 1Hz 2Hzの部分に直線ラインができるのかと想像していました。 下記にコードを記載するので、spectogramの使用が間違っていたらご教示ください。
%%model wave
fs = 1000;% sample frequency(Hz)
model_timestep1 = (0:1/fs:10);
model_timestep2 = (10:1/fs:30);
model_timestep3 = (30:1/fs:40);
sinwave1 = sin(1*pi*0.5*model_timestep1);
sinwave2 = sin(1*pi*1*model_timestep2);
sinwave3 = sin(1*pi*2*model_timestep3);
S1 = horzcat(sinwave1(1:fs*10), sinwave2(1:fs*20), sinwave3(1:fs*10));
%%FFT
fftpt = fs*2; %FFTデータ長
win = fs/10;
overlap = 10;
spectrogram(S1,fftpt,win,overlap,fs,'yaxis')
axis([0,inf, -inf, 5])

Accepted Answer

Naoya
Naoya on 25 Jul 2017
Edited: michio on 25 Jul 2017
win で窓の長さを指定していると思いますが、 サンプリング周波数の 1/10 のサンプル数(100サンプル分)しかない様です。
0.5 Hz を FFT で表現するためには、2sec分の窓を指定する必要があります。 (Fs = 1000 の場合は、 2000 サンプル分)
例えば、下記で所望のスペクトルが確認できます。
fs = 1000;
overlap = 3500;
nfft = 4000;
spectrogram(S1,hann(nfft),overlap,nfft,fs,'yaxis'),ylim([0 5])
  1 Comment
Ryosuke Takahashi
Ryosuke Takahashi on 25 Jul 2017
回答ありがとうございます。
質問ですが、overlap,nfft,fs・・・のnfftはデータの長さを示しているのでしょうか?
また、hann(nfft)は4000point分のハミング時間窓という意味であっていますでしょうか?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!