MATLABIIRフィルター設計関数バターとバター



Matlab Iir Filter Design Functions Buttord



バターワースのデザインIRフィルタはバター関数とバター関数を使用できます。
最初に:バタード関数を使用して、最小次数とカットオフ周波数を見つけます:[n、Wn] =バタード(Wp、Ws、Rp、Rs)。
理解する:上記の式で、nはフィルターの次数を表し、Wnはフィルターのカットオフ周波数を表します。これらの2つのパラメーターは、buttord関数を使用して決定できます。簡単に言えば、Wpでは、通過帯域のリップル係数または通過帯域の最大減衰は(3db)などのRpであり、Wsで​​は、阻止帯域の最小減衰はRs(40dbなど)であり、Wnデフォルトで取得されるのは(-3db)の周波数です。したがって、Rpが3 dBとして選択されている場合、BUTTERのWnはBUTTORDのWpに等しくなります。

1、buttord



機能の意味:バターワースフィルターの設計(次数やカットオフ周波数などのパラメーターを決定する必要があります)

Function usage form: [n, Wn] = buttord (Wp, Ws, Rp, Rs)



[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')

[N, Wn] = buttord (Wp, Ws, Rp, Rs) returns the lowest order n of the digital Butterworth filter, the passband ripple does not exceed Rp dB, and the stopband attenuation is at least Rs dB.
Wp and Ws are the passband and stopband edge frequencies of the filter, normalized to 0 to 1, where 1 corresponds to πrad / sample.
Also returns the scalar (or vector) corresponding cut-off frequency Wn.
To design a Butterworth filter, use the output parameters n and Wn as the input to the butter.

[N, Wn] = buttord (Wp, Ws, Rp, Rs, 's') Find the minimum order n and cutoff frequency Wn of the analog Butterworth filter. Specify the frequency Wp and Ws in radians per second. The pass band or stop band can be infinite.



(1) n — lowest filter order
Integer standard

The lowest filter order, returned as an integer scalar.

(2)Wnカットオフ周波数
スカラースカラー|ベクター
カットオフ周波数は、スカラーまたはベクトルの形式で返されます。

(3)Wp —通過帯域のカットオフ周波数
スカラー|バイナリベクトル

スカラーまたはバイナリベクトルとして指定され、値が0〜1の通過帯域カットオフ周波数。1は正規化されたナイキスト周波数πrad/サンプルに対応します。

WpとWsが両方ともスカラーでWpの場合WpとWsが両方ともスカラーでWp> Wsの場合、buttordはハイパスフィルターの次数とカットオフ周波数を返します。フィルタの阻止帯域は0〜Wsで、通過帯域はWp〜1です。
WpとWsが両方ともベクトルであり、Wsで​​指定された区間に、Wpで指定された区間が含まれている場合(Ws(1)WpとWsが両方ともベクトルであり、Wpで指定された区間に、Wsで指定された区間が含まれている場合(Wp(1)

(4)Ws-阻止帯域のカットオフ周波数
スカラー|バイナリベクトル

スカラーまたはバイナリベクトルとして指定され、値が0〜1の阻止帯域カットオフ周波数。1は正規化されたナイキスト周波数πrad/サンプルに対応します。

データ型:単一|ダブル

(5)Rp-通過帯域リップル
スカラースカラー

スカラー量として指定された通過帯域リップル(dB単位)。

データ型:単一|ダブル

(6)Rs-阻止帯域の減衰
スカラースカラー
阻止帯域の減衰はスカラー量として指定され、単位はdBです。

データ型:単一|ダブル

バトードの次数の次数予測式は、アナログとデジタルの両方の状況でシミュレーション範囲に適用できます。
デジタルの場合、次数と固有振動数を推定する前に、周波数パラメーターをsドメインに変換します。次に、関数はzドメインに変換されます。

buttordは、最初に目的のフィルターの通過帯域周波数を1 rad /秒(ローパスおよびハイパスフィルターの場合)および–1および1 rad /秒(バンドパスおよびバンドストップフィルターの場合)に変換して、ローパスを生成します。フィルタープロトタイプ。次に、阻止帯域の仕様を満たすためにローパスフィルターに必要な最小次数を計算します。

例:

1000 Hzでサンプリングされたデータの場合、0〜40Hzの通過帯域のリップルが3dBを超えてはならず、阻止帯域の減衰が少なくとも60dBであるローパスフィルターを設計します。フィルタの次数とカットオフ周波数を見つけます。

[b,a] = butter(n,Wn)

2次部分に従ってフィルターを指定し、周波数応答をプロットします。

[b,a] = butter(n,Wn,ftype)

結果は次のとおりです。

2、バター

[z,p,k] = butter(___)

[A,B,C,D] = butter(___)

[___] = butter(___,'s')

[b, a] = butter (n, Wn) returns the transfer function coefficients of the nth-order low-pass digital Butterworth filter with normalized cutoff frequency Wn.
example
[b, a] = butter (n, Wn, ftype) Design a low-pass, high-pass, band-pass or band-stop Butterworth filter based on the value of ftype and the number of elements of Wn. The final bandpass and bandstop design is about 2n.
Note: For information on numerical issues that affect the formation of transfer functions, see Limits.
example
[z, p, k] = butter (___) Design a low-pass, high-pass, band-pass or band-stop digital Butterworth filter and return its zero, pole and gain. The grammar may include any input parameters in the previous grammar.
example
[A, B, C, D] = butter (___) design a low-pass, high-pass, band-pass or band-stop digital Butterworth filter, and return the specified state space representation matrix.
example
[___] = butter (___, 's) Design a low-pass, high-pass, band-pass or band-stop analog Butterworth filter with a cut-off frequency of Wn.

n — filter order
integer scalar
The order of the filter, specified as an integer scalar.

Data type: double precision

Wp = 40/500 Ws = 150/500 [n,Wn] = buttord(Wp,Ws,3,60) The result is: n = 5 Wn = 0.0810 

[z,p,k] = butter(n,Wn) sos = zp2sos(z,p,k) freqz(sos,512,1000) title(sprintf('n = %d Butterworth Lowpass Filter',n))

(1)Wnカットオフ周波数
スカラー|バイナリベクトル
スカラーまたは2要素ベクトルとして指定されたカットオフ周波数。カットオフ周波数は、フィルターの振幅応答が1 /√2になる周波数です。

Wnがスカラーの場合、バターはカットオフ周波数がWnのローパスまたはハイパスフィルターを設計します。
Wnが2要素ベクトル[w1w2]の場合、ここでw1デジタルフィルターの場合、カットオフ周波数は0〜1でなければなりません。ここで、1はナイキストレートサンプリングレートまたはπrad/サンプルの半分に対応します。
アナログフィルターの場合、カットオフ周波数はラジアン/秒で表す必要があり、任意の正の値を取ることができます。
データ型:倍精度

(二)

ftype —フィルタータイプ
「低い」| 「バンドパス」| '高' | 'やめる'
次のいずれかとして指定されたフィルタータイプ:

「低」は、カットオフ周波数がWnのローパスフィルターを指定します。 「低」はスカラーWnのデフォルト値です。
「high」は、カットオフ周波数がWnのハイパスフィルターを指定します。
Wnが2要素ベクトルの場合、「bandpass」は2n次のバンドパスフィルターを指定します。 Wnに2つの要素がある場合、デフォルト設定は「バンドパス」です。
Wnが2要素ベクトルの場合、「stop」は2n次のバンドストップフィルターを指定します。

(3)b、a-伝達関数係数
線ベクトル
フィルターの伝達関数係数は、ローパスフィルターとハイパスフィルターの場合、バンドパスフィルターとバンドリジェクトフィルターの場合は長さn + 1の行ベクトルを返し、2n +1の線ベクトルを返します。

デジタルフィルターの場合、伝達関数はbとaで次のように表されます。

アナログフィルターの場合、伝達関数はbとaで表されます。

z、p、k-零点、極およびゲイン
列ベクトル、スカラー
フィルタのゼロ点、極、およびゲインは、長さn(バンドパスおよびバンドストップ設計の場合は2n)の2つの列ベクトルとスカラーとして返されます。

デジタルフィルターの場合、伝達関数はz、p、およびkで次のように表されます。

A、B、C、D —状態空間行列
マトリックス
行列として返される、フィルターの状態空間表現。ローパスおよびハイパス設計の場合はm = n、バンドパスおよびバンドリジェクトフィルターの場合はm = 2nの場合、Aはm×m、Bはm×1、Cは1×m、Dは1×1。

デジタルフィルターの場合、状態空間行列は、次の方法で状態ベクトルx、入力u、および出力yを関連付けます。

例:

カットオフ周波数が300Hzの6次ローパスバターワースフィルターを設計します。 1000 Hzでサンプリングされたデータの場合、ラジアン/サンプルに対応します。その振幅と位相応答をプロットします。これを使用して、ランダム信号の1000サンプルをフィルタリングします。

fc = 300 fs = 1000 [b,a] = butter(6,fc/(fs/2)) freqz(b,a)

dataIn = randn(1000,1) dataOut = filter(b,a,dataIn)

6次バターワースバンドストップフィルターの正規化されたエッジ周波数はラジアン/サンプルです。
その振幅と位相応答をプロットします。ランダムデータをフィルタリングするために使用します。

[b,a] = butter(3,[0.2 0.6],'stop') freqz(b,a)

dataIn = randn(1000.1)
dataOut = filter(b、a、dataIn)

クアルコムバターワースフィルター

9次のハイパスバターワースフィルターを設計します。 300Hzのカットオフ周波数を指定します。 1000 Hzでサンプリングされたデータの場合、ラジアン/サンプルに対応します。振幅と位相の応答をプロットします。 fvtoolで使用するために、零点、極、およびゲインを2次部分に変換します。

[z,p,k] = butter(9,300/500,'high') sos = zp2sos(z,p,k) fvtool(sos,'Analysis','freq')

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

500Hzの低いカットオフ周波数と560Hzの高いカットオフ周波数を持つ20次のバターワースバンドパスフィルターを設計します。 1500Hzのサンプリングレートを指定します。状態空間表現を使用します。 designfiltを使用して、同一のフィルターを設計します。

[A,B,C,D] = butter(10,[500 560]/750) d = designfilt('bandpassiir','FilterOrder',20, ... 'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ... 'SampleRate',1500)

状態空間表現を2次部分に変換します。 fvtoolを使用して、周波数応答を視覚化します。

sos = ss2sos(A,B,C,D) fvt = fvtool(sos,d,'Fs',1500) legend(fvt,'butter','designfilt')

アナログIIRローパスフィルターの比較

カットオフ周波数が2GHzの5次アナログバターワースローパスフィルターを設計します。乗算して、周波数をラジアン/秒に変換します。 4096ポイントでのフィルターの周波数応答を計算します。

n = 5 f = 2e9 [zb,pb,kb] = butter(n,2*pi*f,'s') [bb,ab] = zp2tf(zb,pb,kb) [hb,wb] = freqs(bb,ab,4096)

同じエッジ周波数と3dBの通過帯域リップルを持つ5次チェビシェフタイプIフィルターを設計します。その周波数応答を計算します。

[z1,p1,k1] = cheby1(n,3,2*pi*f,'s') [b1,a1] = zp2tf(z1,p1,k1) [h1,w1] = freqs(b1,a1,4096)

同じエッジ周波数と30dBの阻止帯域減衰を備えた5次チェビシェフタイプIIフィルターを設計します。その周波数応答を計算します。

[z2,p2,k2] = cheby2(n,30,2*pi*f,'s') [b2,a2] = zp2tf(z2,p2,k2) [h2,w2] = freqs(b2,a2,4096)

同じエッジ周波数、3 dBの通過帯域リップル、および30dBの阻止帯域減衰を備えた5次楕円フィルターを設計します。その周波数応答を計算します。

[ze,pe,ke] = ellip(n,3,30,2*pi*f,'s') [be,ae] = zp2tf(ze,pe,ke) [he,we] = freqs(be,ae,4096)

減衰をデシベルでプロットします。周波数をギガヘルツで表します。フィルタを比較します。

plot(wb/(2e9*pi),mag2db(abs(hb))) hold on plot(w1/(2e9*pi),mag2db(abs(h1))) plot(w2/(2e9*pi),mag2db(abs(h2))) plot(we/(2e9*pi),mag2db(abs(he))) axis([0 4 -40 5]) grid xlabel('Frequency (GHz)') ylabel('Attenuation (dB)') legend('butter','cheby1','cheby2','ellip')

バターワースフィルターとチェビシェフIIフィルターには、フラットな通過帯域と広い遷移帯域があります。チェビシェフタイプIと楕円フィルターは、ロールオフ速度が速くなりますが、通過帯域リップルがあります。チェビシェフII設計関数の入力周波数は、通過帯域の終了ではなく、阻止帯域の開始を設定します。