Re: [討論] FFT與filter問題

看板MATLAB作者 (玴)時間14年前 (2011/11/19 21:54), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《silivia0916 (momo)》之銘言: : 是說在下不是很熟悉MATLAB, : 經過爬文及看書後還是遇到了瓶頸, : 想請教一下各位...如果太白目請鞭小力一點>"< : 有一筆5000點的數據,取樣頻率為50Hz, : 為了做濾波,想先看FFT的頻域圖再做設計。 : 程式碼如下:(有點長) : ------------------------------------------------ : clear all;clc; : load mo.xls;data = mo; %讀取檔案 : load_cell = data(1:4999,2); %取第二行的資料 : N = length(load_cell); %資料數量 : Fs = 50; %取樣頻率 : Ts = 1/Fs; %取樣時間間隔 : time = (0:N-1)*Ts; %時域的時間軸刻度 : subplot(1,5,1); : plot(time,load_cell);axis square : axis([-inf inf 0 1]); : title('time-domain (all data)'); : xlabel('time (s)');ylabel('load cell (N)'); : freqstep = Fs/N; %頻域解析度 : freq = freqstep*(-N/2:N/2-1); %頻域的頻率軸刻度 : power = fft(load_cell); : subplot(1,5,2); : plot(freq,power);axis square : title('frequency-domain (all data)'); : xlabel('frequency (Hz)');ylabel('power'); : y_test = ifft(power); %再轉換回來看會不會一樣 : subplot(1,5,3); : plot(time,y_test);axis square : axis([-inf inf 0 1]); : title('time-domain (all data-reverse)'); : xlabel('time (s)');ylabel('load cell (N)'); : [b,a] = butter(5,[],'band'); %設計一個filter : y_new = filter(b,a,load_cell); : subplot(1,5,5); : plot(time,y_new);axis square : axis([-inf inf 0 1]); : ------------------------------------------------ : 目前只寫到這裡,但發現有幾個地方不是很清楚... : 1. 頻域軸刻度的決定 : 2. butter中bandpass的頻率決定 : (因為前面的FFT出圖看不出來雜訊頻率...而且我覺得他怪怪的...) : 麻煩各位幫我看一下,感謝>"< : 如果有必要,可以直接用MSN跟我說... 電腦沒灌matlab,我憑印象看了你po的程式碼 1. 建議你用help fft了解 matlab內建的fft輸出輸入代表什麼 x為N個點的時間序列 使用 y=fft(x),輸出y為N個"複數值"組成的1維陣列, 這陣列表示的是x在0~fs*(N-1)的頻譜 你的程式碼中plot頻率刻度的部分已經平移N/2   但的fft輸出卻沒有shift   還有既然你的fft輸出用power寫, 我猜你應該是想要知道訊號fft結果的大小吧? 因此你的plot(freq,power)應該要改成plot(freq,abs(fftshift(power)))    2. [b, a]=butter(order, Wn,'band') order表示fiter的階數, 越高效果越好同時也需要較大的計算量   Wn是正規化的截止頻率(0~1), 想cut 100Hz, Wn設定成100/(fs/2) 3. 看不到雜訊可能跟你的取樣頻率有關   根據取樣定理所能觀察到的最高頻率為fs/2   而你的fs只有50Hz, 最多觀察到25Hz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.171.66.96 ※ 編輯: monkeykkman 來自: 218.171.66.96 (11/19 21:56)

11/19 22:54, , 1F
>"<太感謝你了!!我再多仔細想想!
11/19 22:54, 1F
文章代碼(AID): #1EnxJx3t (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1EnxJx3t (MATLAB)