bandpass filterの帯域指定値
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
Shoumei
2020-2-19
编辑:Shoumei
2020-2-19
この問題そのものの解ではありませんが、こういった意図しない動作をした場合の解決方法です。
該当するMATLAB関数をエディターで開く。(ソースコードが見れるのもMATLABの良いところ)
>> edit bandpass
確認したい箇所にブレークポイントを設定して、その関数を実行する。
例えば
162行目:フィルタ設計で与えられる各パラメータ
253行目:設計されたフィルタの仕様や特性を確認
125行目:設計されたフィルタでフィルタリングを行った結果を確認
といったところを確認すると、内部で処理が意図した通りに行われているか確認できます。
入力信号、出力信号が意図した通りに定義されているか時系列プロットして確認してみてはいかがでしょうか。
MathWorksさんは推奨されない使い方かもしれませんが・・・
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 デジタル フィルターとアナログ フィルター 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!