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

13 visualizaciones (últimos 30 días)
neshin
neshin el 25 de Oct. de 2018
Comentada: neshin el 28 de Oct. de 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);
もし、ご存知の方がいたら教えてください。

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!