我正在尝试用 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]');

最佳答案

当幅度如此之低时,频率分量的相位定义不明确(且毫无意义)。尝试随机改变每个频谱分量的相位,转换回时域(使用 ifft ),您仍然会恢复正弦曲线。

关于matlab - Matlab 正弦波相位谱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19027236/

10-12 16:35