[問題] 由fft及psd畫頻譜

看板MATLAB作者 (T_T)時間10年前 (2015/01/09 18:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
想請問版上大大有關畫頻譜的問題 先上程式碼 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
文章代碼(AID): #1Khwttxj (MATLAB)
文章代碼(AID): #1Khwttxj (MATLAB)