[問題] 由fft及psd畫頻譜
想請問版上大大有關畫頻譜的問題
先上程式碼
Fs = 100;
t = 0:1/Fs:10;
x=10*cos(2*pi*t*20)+3*cos(2*pi*t*9)+4*cos(2*pi*t*4)+1*randn(size(t));
Hs=spectrum.welch;
psd(Hs,x,'Fs',Fs);
temp=psd(Hs,x,'Fs',Fs);
figure(4);
plot(temp.Frequencies,temp.Data);
y=fft(x,Fs)/Fs;
f=Fs*t;
figure(2);
plot(f(1:Fs/2),2*abs(y(1:Fs/2));
最初用psd畫出頻譜,但是y軸不想取db值,已爬文,可把f跟data取出
但畫出的figure(4) 又跟 第二段以fft為參考的figure(2)
在振幅上有著相當的誤差... 20Hz處差兩倍
這是什麼原因呢?? 若是因psd是多次計算得到,但兩倍的誤差實在有點大...
這樣在往後更複雜的資料分析很讓人擔心
希望板上先進能指導一下
感激不盡...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.212.215
※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1420799479.A.EED.html
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章