簡體   English   中英

用Matlab實現正弦波相位譜

[英]Phase spectrum of sine wave with 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]');

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM