質問: 実験結果のデータにディジタルフィルタをかけるために、バタワース低域フィルタをOctaveを用いて作成しています。 バタワースフィルタの設計を勉強して、振幅特性の図示は出来るようになったのですが、実際に実験データ(CSV形式)をフィルタにかける方法がわからなく困っています。 Octave(MATLAB)のbuttord、butter、filter関数を使って、CSVで与えられる実験結果をフィルタにかけることは可能でしょうか? もし可能であれば、その方法か解決のヒントを教えてください! また、参考になるWebサイトもあればうれしいです。 また、バタワースフィルタではなくこうすればCSVで与えられた実験結果をローパスフィルタにかけられるというサンプルなどがあれば参考にさせてください。 よろしくお願いいたします。
回答: 4.データ処理 が分かりやすいと思います。 あらかじめフィルタ係数a, bを、例えば5次バタワースLPF(fc10Hz、1000Hzサンプル)の場合、 [b,a]=butter(5,10/500); などと定義しておいて、 x2=filter(b,a,x1)のようにfilter関数を使えばフィルタがかかります。 ここでx1が入力、x2が出力です。 実験結果が入ったcsvは、csvread関数を用いれば全体を一つの配列として読み取ることができます。そこから行や列を切り出して、filter関数の入力にするといいでしょう。 URLはMatlabについてですが、butter, filter, csvreadの各関数はoctaveでも使用可能でした。 (3.0.1 version)