バターワースのバンドバスフィルタ 

16 次查看(过去 30 天)
neshin
neshin 2018-10-25
评论: neshin 2018-10-28
Fc1=0.5;
Fc2=50;
N = 30;
バターワースでローカット周波数0.5Hz ハイカット周波数60Hzの バンドパスフィルタですが、フィルタの遅延を補正すう方法を教えていただきたいです。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Hd = butter(Fc1,Fc2,N);
freqz(Hd);
filt_data = filter(Hd, buttLoop); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
filt_data = filter(Hd, buttLoop);
filterの関数を
filt_data = filtfilt(Hd, buttLoop);
に変更すればよいのでしょうか。
ノッチフィルタではfiltfiltで上手く補正できたのですが。
このようなエラーが出ます。
エラー: filtfilt (line 78)
入力引数が不足しています。
エラー: tougou3 (line 84)
filt_data = filtfilt(Hd, buttLoop);
もし、ご存知の方がいたら教えてください。

采纳的回答

Hirokazu Tanaka
Hirokazu Tanaka 2018-10-25
Fc1=0.5;
Fc2=50;
N = 30;
Hd = butter(Fc1,Fc2,N);
は、実行すると
エラー: butter (line 62)
カットオフ周波数は (0,1) の区間内になければなりません。
とのエラーになりますが、
Hd = butter(Fc1,Fc2,N);
は自作の関数でしょうか?それとも https://jp.mathworks.com/help/signal/ref/butter.html ?
  3 个评论
Hirokazu Tanaka
Hirokazu Tanaka 2018-10-28
filtfilt 関数のページ https://jp.mathworks.com/help/signal/ref/filtfilt.html を見ると、いくつか呼び出し方がありますが、
y = filtfilt(d,x)
を使う場合は d は digitalFilter オブジェクト である必要があるみたいです。エラーの原因はここかと思います。
見せて頂いた butter 関数を使うと
>> whos Hd
Name Size Bytes Class Attributes
Hd 1x1 dfilt.df2sos
と、digitalFilterオブジェクトではありません。
ちょうど filtfilt関数ページにあるサンプルコードでもバターワースフィルターの例がありますし、
も参考になると思います。
neshin
neshin 2018-10-28
ありがとうございます。 参考にさせて頂きます。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 フィルターの設計 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!