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

2 vues (au cours des 30 derniers jours)
Ryosuke Takahashi
Ryosuke Takahashi le 25 Juil 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]);

Réponse acceptée

Jiro Doke
Jiro Doke le 25 Juil 2017
Modifié(e) : Jiro Doke le 25 Juil 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 commentaires
Naoya
Naoya le 25 Juil 2017
1Hz の 信号が 0.5Hz, 2Hz の信号に比べ持続時間が2倍になっているからとなります。
0.5Hz : 10 sec
1 Hz : 20 sec
2 Hz : 10 sec
例えば、1Hz の信号の持続時間を 10sec に変更頂けますと、同じレベルのパワーを確認できます。
Ryosuke Takahashi
Ryosuke Takahashi le 25 Juil 2017
回答ありがとうございました。
とても理解できました。 またよろしくお願いいたします。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur フーリエ解析とフィルター処理 dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!