![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/177563/image.png)
フーリエ解析を使用した周波数解析について
2 views (last 30 days)
Show older comments
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]);
0 Comments
Accepted Answer
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);
するとこんな感じになります。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/177563/image.png)
3 Comments
Naoya
on 25 Jul 2017
1Hz の 信号が 0.5Hz, 2Hz の信号に比べ持続時間が2倍になっているからとなります。
0.5Hz : 10 sec
1 Hz : 20 sec
2 Hz : 10 sec
例えば、1Hz の信号の持続時間を 10sec に変更頂けますと、同じレベルのパワーを確認できます。
More Answers (0)
See Also
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!