我很难用'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