Filter löschen
Filter löschen

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

24 Ansichten (letzte 30 Tage)
neshin
neshin am 25 Okt. 2018
Kommentiert: neshin am 28 Okt. 2018
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);
もし、ご存知の方がいたら教えてください。

Akzeptierte Antwort

Hirokazu Tanaka
Hirokazu Tanaka am 25 Okt. 2018
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 Kommentare
Hirokazu Tanaka
Hirokazu Tanaka am 28 Okt. 2018
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 am 28 Okt. 2018
ありがとうございます。 参考にさせて頂きます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!