MATLAB IIR濾波器設計函數buttord與butter

設計巴特沃斯IIR濾波器可使用butter函數和buttord函數。
第一:使用buttord函數先求得最小階數和截止頻率:[n,Wn]= buttord(Wp,Ws,Rp,Rs)。
理解:上式中n代表濾波器階數,Wn代表濾波器的截止頻率,這兩個參數可使用buttord函數來確定。簡單來說,就是在Wp處,通帶內波紋係數或者說是通帶內達到最大衰減爲Rp,如(3db),而在Ws處,阻帶達到最小衰減爲Rs(如40db),而我們默認求得的Wn是在(-3db)時的頻率。所以:When Rp is chosen as 3 dB, the Wn in BUTTER is equal to Wp in BUTTORD.

1、buttord

    函數含義:設計巴特沃思濾波器(階數和截止頻率等參數要確定)

 函數使用形式: [n,Wn] = buttord(Wp,Ws,Rp,Rs)

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

 [n,Wn] = buttord(Wp,Ws,Rp,Rs)返回數字巴特沃思濾波器的最低階n,通帶紋波不超過Rp dB,阻帶衰減至少Rs dB。
 Wp和Ws分別是濾波器的通帶和阻帶邊沿頻率,歸一化爲0到1,其中1對應於πrad / sample。
 還返回相應的截止頻率Wn的標量(或矢量)。
 要設計巴特沃斯濾波器,請使用輸出參數n和Wn作爲butter的輸入。

 [n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')查找模擬巴特沃思濾波器的最小階數n和截止頻率Wn。 以弧度每秒爲單位指定頻   率  Wp和Ws。 通帶或阻帶可以是無限的。

 (1)n —最低濾波器階數
       整數標

       最低的濾波器階數,以整數標量返回。

  (2)    Wn-截止頻率
               標量| 向量
               截止頻率,以標量或矢量形式返回。

 

   (3) Wp —通帶截止頻率
             標量| 二元向量

              通帶截止頻率,指定爲標量或二元向量,值在0到1之間,其中1對應于歸一化的奈奎斯特頻率πrad / sample。

              如果Wp和Ws均爲標量且Wp <Ws,則buttord返回低通濾波器的階數和截止頻率。濾波器的阻帶範圍爲Ws至1,通帶範圍爲0至Wp。
              如果Wp和Ws均爲標量且Wp> Ws,則buttord返回高通濾波器的階數和截止頻率。濾波器的阻帶範圍是0到Ws,通帶範圍是Wp到1。
               如果Wp和Ws都是向量,並且由Ws指定的間隔包含由Wp指定的間隔(Ws(1)<Wp(1)<Wp(2)<Ws(2)),則buttord返回的階次和截止頻率爲帶通濾波器。濾波器的阻帶範圍從0到Ws(1),範圍從Ws(2)到1。通帶範圍從Wp(1)到Wp(2)。
                如果Wp和Ws都是向量,並且Wp指定的間隔包含Ws指定的一個(Wp(1)<Ws(1)<Ws(2)<Wp(2)),則buttord返回的階數和截止頻率爲帶阻濾波器。濾波器的阻帶範圍爲Ws(1)至Ws(2)。通帶範圍從0到Wp(1),從Wp(2)到1。

    (4)Ws —阻帶截止頻率
             標量| 二元向量

             

              阻帶截止頻率,指定爲標量或二元向量,值在0到1之間,其中1對應于歸一化的奈奎斯特頻率πrad / sample。

             數據類型:單| 雙   

     (5)Rp-通帶紋波
              標量

              

              通帶紋波,指定爲標量,單位爲dB。

               數據類型:單| 雙

       (6)Rs-阻帶衰減
                標量
                阻帶衰減,指定爲標量,單位爲dB。

                數據類型:單| 雙

          

               Buttord的階數預測公式適用於模擬和數字情況下的模擬範圍。
               對於數字情況,它將在估計階數和固有頻率之前將頻率參數轉換爲s域。 然後,該函數將轉換回z域。

buttord最初通過將所需濾波器的通帶頻率轉換爲1 rad / second(對於低通和高通濾波器)以及–1和1 rad / second(對於帶通和帶阻濾波器)來開發低通濾波器原型。 然後,它計算低通濾波器滿足阻帶規格所需的最小階數。

 

 

 

           舉例:

          對於以1000 Hz採樣的數據,設計一個低通濾波器,其0至40 Hz的通帶中的波紋不應超過3 dB,阻帶的衰減至少應爲60 dB。 查找濾波器階數和截止頻率。

Wp = 40/500;
Ws = 150/500;
[n,Wn] = buttord(Wp,Ws,3,60)
結果爲:
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))

結果爲:

                       

2、butter

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

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

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

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

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

[b,a] = butter(n,Wn)返回歸一化截止頻率Wn的n階低通數字巴特沃斯濾波器的傳遞函數係數。

[b,a] = butter(n,Wn,ftype)根據ftype的值和Wn的元素數來設計低通,高通,帶通或帶阻Butterworth濾波器。最終的帶通和帶阻設計約爲2n。
注意:有關影響形成傳遞函數的數值問題的信息,請參閱限制。

[z,p,k] = butter(___)設計一個低通,高通,帶通或帶阻數字巴特沃斯濾波器,並返回其零,極點和增益。該語法可以包括先前語法中的任何輸入參數。

[A,B,C,D] = butter(___)設計一個低通,高通,帶通或帶阻數字Butterworth濾波器,並返回指定其狀態空間表示形式的矩陣。

[___] = butter(___,'s)設計一個截止角頻率爲Wn的低通,高通,帶通或帶阻模擬巴特沃斯濾波器。

 

n —濾波器階數
整數標量
濾波器的階數,指定爲整數標量。

數據類型:雙精度

(1)Wn-截止頻率
標量| 二元向量
截止頻率,指定爲標量或二元素矢量。 截止頻率是濾波器的幅度響應爲1 /√2的頻率。

如果Wn是標量,則butter將設計一個截止頻率爲Wn的低通或高通濾波器。
如果Wn是二元素矢量[w1 w2],其中w1 <w2,則butter設計一個具有較低截止頻率w1和較高截止頻率w2的帶通或帶阻濾波器。
對於數字濾波器,截止頻率必須在0到1之間,其中1對應於奈奎斯特速率-採樣速率的一半或πrad / sample。
對於模擬濾波器,截止頻率必須以弧度/秒錶示,並且可以取任何正值。
數據類型:雙精度

(2)

ftype —過濾器類型
“low” | “bandpass” | 'high'| 'stop'
過濾器類型,指定爲以下之一:

“low”指定截止頻率爲Wn的低通濾波器。 “low”是標量Wn的默認值。
“high”指定截止頻率爲Wn的高通濾波器。
如果Wn是一個二元素矢量,則“ bandpass”指定2n階的帶通濾波器。 當Wn具有兩個元素時,默認設置爲'bandpass'。
如果Wn是二元素矢量,則“ stop”指定2n階的帶阻濾波器。

(3)b,a-傳遞函數係數
行向量
濾波器的傳遞函數係數,對於低通和高通濾波器,返回爲長度n + 1的行向量;對於帶通和帶阻濾波器,返回爲2n + 1的行向量。

對於數字濾波器,傳遞函數用b和a表示爲

對於模擬濾波器,傳遞函數用b和a表示爲

z,p,k-零點,極點和增益
列向量,標量
濾波器的零點,極點和增益作爲長度爲n的兩個列向量(對於帶通和帶阻設計爲2n)和一個標量返回。

對於數字濾波器,傳遞函數用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相關聯:

 舉例:

設計一個截止頻率爲300 Hz的6階低通巴特沃斯濾波器,對於以1000 Hz採樣的數據,其對應於rad / sample。 繪製其幅度和相位響應。 用它來過濾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階Butterworth帶阻濾波器歸一化的邊沿頻率爲rad/sample。
繪製其幅度和相位響應。 用它來過濾隨機數據。

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

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

高通巴特沃斯濾波器

設計一個9階高通巴特沃斯濾波器。 指定300 Hz的截止頻率,對於以1000 Hz採樣的數據,它對應於rad / sample。 繪製幅度和相位響應。 將零,極點和增益轉換爲二階部分,以供fvtool使用。

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

 

帶通巴特沃斯濾波器

設計一個20階Butterworth帶通濾波器,其較低的截止頻率爲500 Hz,較高的截止頻率爲560 Hz。 指定1500 Hz的採樣率。 使用狀態空間表示。 使用designfilt設計一個相同的過濾器。

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

將狀態空間表示形式轉換爲二階部分。 使用fvtool可視化頻率響應。

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

模擬IIR低通濾波器的比較

設計一個截止頻率爲2 GHz的5階模擬Butterworth低通濾波器。 乘以將頻率轉換爲每秒弧度。 計算濾波器在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);

Design a 5th-order Chebyshev Type I filter with the same edge frequency and 3 dB of passband ripple. Compute its frequency response.

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

Design a 5th-order Chebyshev Type II filter with the same edge frequency and 30 dB of stopband attenuation. Compute its frequency response.

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

Design a 5th-order elliptic filter with the same edge frequency, 3 dB of passband ripple, and 30 dB of stopband attenuation. Compute its frequency response.

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

Plot the attenuation in decibels. Express the frequency in gigahertz. Compare the filters.

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')

Butterworth和Chebyshev II型濾波器具有平坦的通帶和較寬的過渡帶。 Chebyshev I型和橢圓濾波器的滾降速度更快,但具有通帶紋波。 Chebyshev II型設計功能的輸入頻率設置了阻帶的開始而不是通帶的結束。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章