我很难用 'buttord' 和 'butter' 函数计算巴特沃斯系数。我的目标是从我构建的时间序列中过滤掉噪音。时间序列有一个红噪声分量和一个频率为 0.3 Hz 的正弦信号。时间序列的采样频率为 10 Hz。
按照关于“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 Hz 信号
- >> 0.3 Hz 时的噪声
- 通过从 0 到 0.33 Hz 的所有内容
- 衰减 0.36 Hz 以上的一切
您的帮助将不胜感激!
数据可以在这里下载:http ://dl.dropbox.com/u/1918592/detrendedTS.mat 'ts' 的第 1 列是时间变量,第 2 列是数据变量
我去除了线性拟合(Matlab'detrend')以消除一些走开的红噪声行为。