bandpass filterの帯域指定値
4 views (last 30 days)
Show older comments
R2019aでbandpass関数を使用してフィルターをかけましたが、フィルターのかかっていないデータが返ってきました。
256HZでサンプリングされたdataに対して0.1~30Hzのバンドパスをかけたいため、
A=bandpass(data,[0.1 30],256);
とコードしましたが、フィルタリングされていないデータが返ってきました。
B=bandpass(data,[1 30],256);
と1~30Hzでフィルタリングしたデータは問題ありません。
下図は同じデータをフィルタリングしたもののパワースペクトルでAが赤線、Bが青線となっています。
サポートページにも通過周波数を指定するfpassのベクトルに関して整数値とは指定されていなかったのですが、
整数値でないといけないのか、コードのエラーなのか教えていただければ幸いです。

4 Comments
Shoumei
on 19 Feb 2020
Edited: Shoumei
on 19 Feb 2020
この問題そのものの解ではありませんが、こういった意図しない動作をした場合の解決方法です。
該当するMATLAB関数をエディターで開く。(ソースコードが見れるのもMATLABの良いところ)
>> edit bandpass
確認したい箇所にブレークポイントを設定して、その関数を実行する。
例えば
162行目:フィルタ設計で与えられる各パラメータ
253行目:設計されたフィルタの仕様や特性を確認
125行目:設計されたフィルタでフィルタリングを行った結果を確認
といったところを確認すると、内部で処理が意図した通りに行われているか確認できます。
入力信号、出力信号が意図した通りに定義されているか時系列プロットして確認してみてはいかがでしょうか。
MathWorksさんは推奨されない使い方かもしれませんが・・・
Answers (0)
See Also
Categories
Find more on デジタル フィルターとアナログ フィルター in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!