2013-09-26 561 views
3

我試圖用Matlab繪製正弦波的相位譜。下面我附上代碼,由於缺乏聲譽,我無法附上圖表。由於幅度譜似乎很好,相位譜似乎是不正確的,它就像一個噪音。你有什麼想法,爲什麼?正弦波的相位譜與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]'); 

回答

2

當幅度如此之低時,頻率分量的相位不明確(無意義)。嘗試隨機更改每個頻譜分量的相位,將其轉換回時域(使用ifft),並且您仍然可以恢復正弦曲線。

+0

非常感謝。這是一個問題。我還有一個問題:我做了四個正弦曲線之和的信號: 'x1 = sin(2 * pi()* 1000 * t); x2 = sin(2 * pi()* 2000 * t); x3 = cos(2 * pi()* 3000 * t); x4 = sin(2 * pi()* 3500 * t); x5 = x1 + x2 + x4 + x3;' 當我繪製x5的幅度譜時,我收到四個峯。其中三個具有相同的值= 1,但第四個(對於3500Hz)具有約0.65的值。什麼原因?它們不應該具有與正弦波振幅相同的值嗎? – Pawel

+0

隨着您將正弦波頻率提高到4000 Hz(奈奎斯特頻率),正弦波的表示不夠準確,這會導致更寬範圍頻譜分量中的能量「模糊」。請注意,隨着峯值降低,附近的組件的幅度也在增加。正弦曲線的總能量是相同的,但由於其不太精確的表示,它會得到更多的頻率。如果你「繪製(t,x4)」並放大,你會看到不準確的地方。換句話說,部分sinuosoid被轉換成噪聲,並且您可以在頻率圖中看到噪聲頻譜。 –