我很難用'buttord'和'butter'函數來計算巴特沃思係數。我的目標是過濾掉我構建的時間序列中的噪音。時間序列具有紅色噪聲分量和頻率爲0.3Hz的正弦信號。 時間序列的採樣頻率爲10 Hz。MATLAB - 巴特沃思濾波器設計的輸入頻率
繼 'buttord' http://www.mathworks.com/help/signal/ref/buttord.html我計算[N,WN]爲規範(例如跟隨1的文檔)的文件:
Wp = 0.33/(sfreq/2); Ws = 0.37/(sfreq/2);
passripp = 0.1; stopatten = 40;
[n,Wn] = buttord(Wp,Ws,passripp,stopatten);
[b,a] = butter(n,Wn);
y_butter = filter(b,a,timeseries(:,2));
繪製y_butter隨着時間只是給了我零無處不在!
我試圖使用「freqz」檢驗濾波器的頻率響應(使用512個樣本):
freqz(b,a,512,sfreq)
其曲線圖表明過渡頻帶是1個4 Hz之間的!
我的過濾器後面的理解是:在
- 信號以0.3赫茲
- 噪聲>> 0.3赫茲
- 通過一切從0到0.33赫茲
- 衰減一切從超出 0.36赫茲
您的幫助將不勝感激!
數據可以在這裏下載:http://dl.dropbox.com/u/1918592/detrendedTS.mat的「TS」是時間可變的,第2欄是數據可變
我去趨勢的線性擬合(Matlab的消除趨勢')以除去一些步入式的1列遠離紅色噪音行爲。
謝謝您的回覆。 你簡單的低通就足夠了,但對於未來的工作,我仍然想讓buttord工作。'sos,g] = tf2sos(b,a)',然後級聯濾波器'Hd = dfilt.df2sos(sos,g)',然後應用濾波器ybutter = filter(Hd,timeseries)仍然給我零。 頻率響應'freqz(Hd)'採用標準化單位,我不知道如何解釋。 – janon128
好的,很酷。修正你的時間系列代碼(它給了我一個錯誤),我會幫助更多:) – learnvst
我正在使用的(detrended)時間系列可在這裏: http://dl.dropbox.com/u/ 1918592/detrendedTS.mat 其中第一列是時間數據,第二列是生成的數據。 – janon128