3

Matlabで正弦波の位相スペクトルをプロットしようとしています。以下にコードを添付します。評判がないため、図を添付できません。マグニチュードスペクトルは良さそうですが、位相スペクトルは正しくないようで、まるでノイズのようです。理由はわかりますか?

clear all;

fs=8000;
l=1000;
t=1/fs*(1:l);

x1=sin(2*pi()*1000*t);
spec_x1=fft(x1,1000);
magnitude=2*abs(spec_x1)/l;
phase=angle(spec_x1)*180/pi;

figure
plot(fs/2*linspace(0,1,500),magnitude(1:500));
title('Magnitude spectrum');
xlabel('F[Hz]');
ylabel('Magnitude');

figure
plot(fs/2*linspace(0,1,500),phase(1:500));
title('Phase spectrum');
xlabel('F[Hz]');
ylabel('Phase [degrees]');
4

1 に答える 1

2

振幅が非常に小さい場合、周波数成分の位相は不明確 (かつ無意味) です。各スペクトル成分の位相をランダムに変更してみて、( を使用してifft) 時間領域に戻しても、正弦波が復元されます。

于 2013-09-26T11:43:21.150 に答える