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

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

0 votos

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

neshin
neshin el 26 de Oct. de 2018
ありがとうございます。
回答になっているかわかりませんが。
Hd = butter(Fc1,Fc2,N); は、tdatoolで作った関数です。 function Hd = butte と作成された関数に引数(Fc1,Fc2,N) を与えて自作関数にしています。
以下のコードがfdatoolで作成された関数で、 引数を(Fc1,Fc2,N)を入れてカットオフ周波数を呼び出しもとで、 変更できるようにしています。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function Hd = butter(Fc1,Fc2,N)
%BUTTER 離散時間フィルター オブジェクトを返します。
% MATLAB Code
% Generated by MATLAB® 9.4 and Signal Processing Toolbox 8.0.
% Generated on: 23-Oct-2018 14:50:10
% Butterworth Bandpass filter designed using FDESIGN.BANDPASS.
% All frequency values are in Hz.
Fs = 200; % Sampling Frequency
% N = 10; % Order
% Fc1 = 0.5; % First Cutoff Frequency
%Fc2 = 60; % Second Cutoff Frequency
% Construct an FDESIGN object and call its BUTTER method. h = fdesign.bandpass('N,F3dB1,F3dB2', N, Fc1, Fc2, Fs); Hd = design(h, 'butter');
% [EOF]
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)

Preguntada:

el 25 de Oct. de 2018

Comentada:

el 28 de Oct. de 2018

Community Treasure Hunt

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

Start Hunting!