フーリエ解析を使用した周波数解析について

2 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にはピークが出現しません。 コードのどこか不足している部分があると考えましたが、原因がわからなく質問いたしました。
下記にコードを記載したのですが、修正必要な個所はありますでしょうか?
ご教示いただけると幸いです。 よろしくお願いいたします。
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));
L = length(S1); % Window length
T = 1/fs; % sec sample
t = (0:L-1)*T;
Y = fft(S1);
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f1 = fs*(0:(L/2))/L;
subplot(2,1,1);
plot(S1);
axis([0 inf -inf inf]);
subplot(2,1,2);
plot(f1,P1)
ylabel('FFT');
axis([0 5 0 inf]);

Accepted Answer

Jiro Doke
Jiro Doke on 25 Jul 2017
Edited: Jiro Doke on 25 Jul 2017
正弦波は sin(2*pi*f*t) なので定義は以下のようになるのではないでしょうか。
sinwave1 = sin(2*pi*0.5*model_timestep1);
sinwave2 = sin(2*pi*1*model_timestep2);
sinwave3 = sin(2*pi*2*model_timestep3);
するとこんな感じになります。
  3 Comments
Naoya
Naoya on 25 Jul 2017
1Hz の 信号が 0.5Hz, 2Hz の信号に比べ持続時間が2倍になっているからとなります。
0.5Hz : 10 sec
1 Hz : 20 sec
2 Hz : 10 sec
例えば、1Hz の信号の持続時間を 10sec に変更頂けますと、同じレベルのパワーを確認できます。
Ryosuke Takahashi
Ryosuke Takahashi on 25 Jul 2017
回答ありがとうございました。
とても理解できました。 またよろしくお願いいたします。

Sign in to comment.

More Answers (0)

Categories

Find more on フーリエ解析とフィルター処理 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!