[問題]離散時間序列資料做FFT的疑問

看板MATLAB作者 (ebay18)時間10年前 (2015/06/24 12:39), 10年前編輯推噓2(2021)
留言23則, 3人參與, 最新討論串1/1
我手邊有一個接近1萬筆的離散的時間序列數資料 (時間間格相等.且皆為正數) 想做FFT並求出頻率分布圖.第一次上手有些疑問. js=load('C:\Users\pc\Desktop\JS.txt') N=length(js) fs=300 jsfft=fft(js) jspower=abs(jsfft).^2 freqXaxis=fs/N*(-N/2:N/2-1) plot(freqXaxis,jspower) xlim([0 end]) 想問freqXaxis=fs/N*(-N/2:N/2-1) 其中(-N/2:N/2-1)為何要如此限制. 我設同樣長度(0:N-1)跑出的圖形. 為何幾乎全部收斂在最左側0的位置. 圖形幾乎看不到 最後一行xlim([0 end]). 如果拿掉.X軸頻率為何只跑出1條power很大的直線. 其他頻率power小到幾乎沒有. 如果保留.則是呈現看似完美的頻譜分布圖(雖然對錯不知.但看起來可用度較高) 還勞請各位解答小小疑惑.謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.68.217.73 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1435120742.A.F94.html ※ 編輯: ebay18 (42.68.217.73), 06/24/2015 12:39:36

06/24 14:04, , 1F
因為fft只能看到 fs/2,解析度為fs/N,你可以直接
06/24 14:04, 1F

06/24 14:05, , 2F
plot(jypower); 你會發現圖案是對稱的
06/24 14:05, 2F

06/24 14:10, , 3F
但不了解為啥要設 freqXaxis=fs/N*(-N/2:N/2-1)
06/24 14:10, 3F

06/24 14:10, , 4F
這樣會使freq翻轉阿...
06/24 14:10, 4F

06/24 14:16, , 5F
m=1:N; fftX=m*Fs/2/N; fftY=abs(fft(data));
06/24 14:16, 5F

06/24 14:31, , 6F
樓上 像你說的啊 解析度是fs/N
06/24 14:31, 6F

06/24 19:34, , 7F
我照S大的指令出來是這樣.
06/24 19:34, 7F

06/24 19:34, , 8F

06/24 19:34, , 9F
還是一樣往左收斂..
06/24 19:34, 9F

06/24 19:35, , 10F
想再請問另外用原始的指令跑..為何有放xlim([0 end])
06/24 19:35, 10F

06/24 19:36, , 11F
結果會差很多.有放是這樣http://imgs.cc/image/PfAUdpi
06/24 19:36, 11F

06/24 19:37, , 12F
06/24 19:37, 12F
※ 編輯: ebay18 (134.208.38.105), 06/24/2015 20:40:02

06/25 13:23, , 13F
不好意思,少一句: fftY=fftY(1:length(fftY)/2);
06/25 13:23, 13F

06/25 13:25, , 14F
我的方法與原PO不同,所以不用放xlim(...)
06/25 13:25, 14F

06/25 13:29, , 15F
應該是往右收斂才是,左側高起是因為有DC值,
06/25 13:29, 15F

06/25 13:29, , 16F
data = data - mean(data); 然後轉fft就不會有左側高峰
06/25 13:29, 16F

06/25 13:38, , 17F
你有 1.x軸設定不正確 2.xlim的end 用法很奇怪,改
06/25 13:38, 17F

06/25 13:39, , 18F
length(data) 會不會比較好?
06/25 13:39, 18F

06/25 13:39, , 19F
應該是改 freq/2才是,科科。
06/25 13:39, 19F

06/25 13:40, , 20F
即 xlim([0 freq/2]),不過你X軸是有問題的... 怎改都錯
06/25 13:40, 20F

06/25 14:03, , 21F
如果不介意,我可以分享我的程式,但會有BUG就是了
06/25 14:03, 21F

06/25 14:05, , 22F
06/25 14:05, 22F

06/25 14:07, , 23F
開.m檔後執行,版本2014a,先建立.mat檔
06/25 14:07, 23F
文章代碼(AID): #1LYZHc-K (MATLAB)
文章代碼(AID): #1LYZHc-K (MATLAB)