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

조회 수: 9 (최근 30일)
Ryosuke Takahashi
Ryosuke Takahashi 2017년 7월 25일
댓글: Ryosuke Takahashi 2017년 7월 25일
短時間フーリエ変換について質問させていただきます。
フーリエ解析を行い、周波数が変化した時間とパワー変化を知りたいです。
今回モデル波形として、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])

채택된 답변

Naoya
Naoya 2017년 7월 25일
편집: michio 2017년 7월 25일
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
Ryosuke Takahashi
Ryosuke Takahashi 2017년 7월 25일
回答ありがとうございます。
質問ですが、overlap,nfft,fs・・・のnfftはデータの長さを示しているのでしょうか?
また、hann(nfft)は4000point分のハミング時間窓という意味であっていますでしょうか?

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

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!