「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.3Hzの信号
- >> 0.3 Hz のノイズ
- 0 から 0.33 Hz までのすべてを渡す
- 0.36 Hz 以上のすべてを減衰
あなたの助けは大歓迎です!
データはここからダウンロードできます: http://dl.dropbox.com/u/1918592/detrendedTS.mat「ts」の列 1 は時間変数、列 2 はデータ変数です
線形近似 (Matlab 'detrend') を detrending して、ウォークアウェイ レッド ノイズ動作の一部を削除しました。