主要内容

黄油

巴特沃斯滤波器的设计

描述

例子

[<一个href="#bucse3u_sep_shared-ba" class="intrnllnk">b,一个) =黄油(<一个href="#bucse3u_sep_shared-n" class="intrnllnk">n,<一个href="#bucse3u-Wn" class="intrnllnk">Wn返回的传递函数系数n具有归一化截止频率的阶低通数字巴特沃斯滤波器Wn

例子

[<一个href="#bucse3u_sep_shared-ba" class="intrnllnk">b,一个) =黄油(<一个href="#bucse3u_sep_shared-n" class="intrnllnk">n,<一个href="#bucse3u-Wn" class="intrnllnk">Wn,<一个href="#bucse3u-ftype" class="intrnllnk">ftype设计低通、高通、带通或带阻巴特沃斯滤波器,取决于的值ftype元素的个数Wn.由此产生的带通和带阻设计是二阶的n

注意:看到<一个href="//www.ru-cchi.com/help/signal/ref/butter.html" class="intrnllnk">限制有关影响传递函数形成的数值问题的信息。

例子

[<一个href="#bucse3u_sep_shared-zpk" class="intrnllnk">z,磷、钾) =黄油(<年代p一个nclass="argument_placeholder">___设计低通、高通、带通或带阻数字巴特沃斯滤波器,并返回其零点、极点和增益。该语法可以包括以前语法中的任何输入参数。

例子

[<一个href="#bucse3u_sep_shared-ABCD" class="intrnllnk">A, B, C, D) =黄油(<年代p一个nclass="argument_placeholder">___设计低通、高通、带通或带阻数字巴特沃斯滤波器,并返回指定其状态空间表示的矩阵。

例子

[<年代p一个nclass="argument_placeholder">___) =黄油(<年代p一个nclass="argument_placeholder">___, ' s ')设计了具有截止角频率的低通、高通、带通或带阻模拟巴特沃斯滤波器<一个href="#bucse3u-Wn" class="intrnllnk">Wn

例子

全部折叠

设计一个截止频率为300hz的六阶低通巴特沃斯滤波器,对于1000hz采样的数据,对应于<年代p一个nclass="inlineequation"> 0 6 π rad /样品。画出它的大小和相位响应。用它来过滤1000个样本的随机信号。

fc = 300;fs = 1000;[b] =黄油(fc / (fs / 2));Freqz (b,a,[],fs) subplot(2,1,1) ylim([-100 20])

图中包含2个轴对象。标题为Phase的Axes对象1包含一个类型为line的对象。标题为Magnitude的Axes对象2包含一个类型为line的对象。

dataIn = randn (1000 1);dataOut =过滤器(b, a, dataIn);

设计一种边频率归一化的六阶巴特沃思带阻滤波器<年代p一个nclass="inlineequation"> 0 2 π 而且<年代p一个nclass="inlineequation"> 0 6 π rad /样品。画出它的大小和相位响应。使用它来过滤随机数据。

[b,a] =黄油(3,[0.2 0.6],<年代p一个n年代tyle="color:#A020F0">“停止”);freqz (b)

图中包含2个轴对象。标题为Phase的Axes对象1包含一个类型为line的对象。标题为Magnitude的Axes对象2包含一个类型为line的对象。

dataIn = randn (1000 1);dataOut =过滤器(b, a, dataIn);

设计一个9阶高通巴特沃斯滤波器。指定截止频率为300hz,对于1000hz采样的数据,对应于<年代p一个nclass="inlineequation"> 0 6 π rad /样品。画出幅值和相位响应。将零、极点和增益转换为二阶部分供fvtool

(z,磷、钾)=黄油(9300/500,<年代p一个n年代tyle="color:#A020F0">“高”);sos = zp2sos (z,磷、钾);fvtool (sos,<年代p一个n年代tyle="color:#A020F0">“分析”,<年代p一个n年代tyle="color:#A020F0">“频率”)

图1:幅值响应(dB)和相位响应包含一个轴对象。标题为幅度响应(dB)和相位响应的axis对象包含一个类型为line.

设计一个20阶巴特沃思带通滤波器,其较低截止频率为500hz,较高截止频率为560hz。指定1500赫兹的采样率。使用状态空间表示。设计一个相同的滤波器designfilt

[A,B,C,D] =黄油(10,[500 560]/750);d = designfilt (<年代p一个n年代tyle="color:#A020F0">“bandpassiir”,<年代p一个n年代tyle="color:#A020F0">“FilterOrder”, 20岁,<年代p一个n年代tyle="color:#0000FF">...“HalfPowerFrequency1”, 500,<年代p一个n年代tyle="color:#A020F0">“HalfPowerFrequency2”, 560,<年代p一个n年代tyle="color:#0000FF">...“SampleRate”, 1500);

将状态空间表示转换为二阶部分。将频率响应可视化fvtool

sos = ss2sos (A, B, C, D);fvt = fvtool (sos d<年代p一个n年代tyle="color:#A020F0">“Fs”, 1500);传奇(fvt<年代p一个n年代tyle="color:#A020F0">“黄油”,<年代p一个n年代tyle="color:#A020F0">“designfilt”)

图1:量级响应(dB)包含一个坐标轴对象。标题为幅度响应(dB)的axis对象包含两个类型为line的对象。这些对象表示butter, designfilt.

设计一个截止频率为2ghz的五阶模拟巴特沃斯低通滤波器。乘以<年代p一个nclass="inlineequation"> 2 π 将频率转换为弧度/秒。计算滤波器在4096点处的频率响应。

n = 5;f = 2 e9;[zb, pb, kb] =黄油(n, 2 f *π*,<年代p一个n年代tyle="color:#A020F0">“年代”);(bb, ab) = zp2tf (zb、铅、kb);(hb, wb) =频率(bb, ab, 4096);

设计一个具有相同边缘频率和3db通带纹波的五阶切比雪夫I型滤波器。计算它的频率响应。

(z1, p1, k1) = cheby1 (n 3 2 f *π*,<年代p一个n年代tyle="color:#A020F0">“年代”);(b1, a1] = zp2tf (z1, p1, k1);[h1, w1] =频率(b1, a1, 4096);

设计了具有相同边缘频率和30 dB阻带衰减的5阶切比雪夫型滤波器。计算它的频率响应。

(z2, p2, k2) = cheby2(2 *π* f n, 30日,<年代p一个n年代tyle="color:#A020F0">“年代”);(b2 a2) = zp2tf (z2, p2, k2);(h2 w2) =频率(b2, a2, 4096);

设计一个边缘频率相同,通带纹波为3 dB,阻带衰减为30 dB的五阶椭圆滤波器。计算它的频率响应。

(泽、pe、ke) = ellip (n, 3, 30日,2 f *π*,<年代p一个n年代tyle="color:#A020F0">“年代”);[, ae] = zp2tf(泽、pe、客);[他,我们]=频率(ae, 4096);

用分贝绘制衰减图。用千兆赫表示频率。比较了过滤器。

情节(wb / (2 e9 *π)mag2db (abs (hb)))<年代p一个n年代tyle="color:#A020F0">在图(w1/(2e9*pi),mag2db(abs(h1)))图(w2/(2e9*pi),mag2db(abs(h2)))图(we/(2e9*pi),mag2db(abs(he)))轴([0 4 -40 5])网格xlabel(<年代p一个n年代tyle="color:#A020F0">“频率(GHz)”) ylabel (<年代p一个n年代tyle="color:#A020F0">“衰减(dB)”)传说(<年代p一个n年代tyle="color:#A020F0">“黄油”,<年代p一个n年代tyle="color:#A020F0">“cheby1”,<年代p一个n年代tyle="color:#A020F0">“cheby2”,<年代p一个n年代tyle="color:#A020F0">“ellip”)

图中包含一个axes对象。axis对象包含4个line类型的对象。这些对象表示butter、cheby1、cheby2、ellip。

巴特沃斯和切比雪夫II型滤波器具有平面通带和宽过渡带。切比雪夫I型和椭圆滤波器滚动速度更快,但有通带波纹。切比雪夫II型设计函数的频率输入设置阻带的开始,而不是通带的结束。

输入参数

全部折叠

筛选器顺序,指定为整数标量。对于带通和带阻设计,n表示筛选器顺序的一半。

数据类型:

截止频率,指定为标量或双元素向量。截止频率是滤波器的幅值响应所在的频率<年代p一个nclass="inlineequation">1 /√2.

  • 如果Wn是标量,那么黄油设计一个具有截止频率的低通或高通滤波器Wn

    如果Wn是二元向量吗(w1 w2),在那里w1<w2,然后黄油设计具有较低截止频率的带通或带阻滤波器w1以及更高的截止频率w2

  • 对于数字滤波器,截止频率必须介于0和1之间,其中1对应于奈奎斯特速率-采样速率的一半或πrad /样品。

    对于模拟滤波器,截止频率必须以弧度/秒表示,并且可以取任何正值。

数据类型:

过滤器类型,指定为以下之一:

  • “低”指定具有截止频率的低通滤波器<一个href="#bucse3u-Wn" class="intrnllnk">Wn“低”是默认的标量吗Wn

  • “高”指定具有截止频率的高通滤波器Wn

  • “带通”指定二阶带通滤波器<一个href="#bucse3u_sep_shared-n" class="intrnllnk">n如果Wn是一个二元向量。“带通”是默认值Wn有两个元素。

  • “停止”指定阶为2的带阻滤波器n如果Wn是一个二元向量。

输出参数

全部折叠

滤波器的传递函数系数,作为长度的行向量返回<一个href="#bucse3u_sep_shared-n" class="intrnllnk">n低通和高通滤波器+ 1和2n+ 1为带通和带阻滤波器。

  • 对于数字滤波器,传递函数表示为b而且一个作为

    H z B z 一个 z b (1) + b (2) z 1 + + b (n + 1) z n (1) + (2) z 1 + + (n + 1) z n

  • 对于模拟滤波器,传递函数表示为b而且一个作为

    H 年代 B 年代 一个 年代 b (1) 年代 n + b (2) 年代 n 1 + + b (n + 1) (1) 年代 n + (2) 年代 n 1 + + (n + 1)

数据类型:

滤波器的零、极点和增益,作为长度的两个列向量返回<一个href="#bucse3u_sep_shared-n" class="intrnllnk">n(2n对于带通和带阻设计)和标量。

  • 对于数字滤波器,传递函数表示为zp,k作为

    H z k 1 z (1) z 1 1 z (2) z 1 1 z (n) z 1 1 (1页) z 1 1 (2页) z 1 1 p (n) z 1

  • 对于模拟滤波器,传递函数表示为zp,k作为

    H 年代 k 年代 z (1) 年代 z (2) 年代 z (n) 年代 (1页) 年代 (2页) 年代 p (n)

数据类型:

过滤器的状态空间表示,作为矩阵返回。如果=<一个href="#bucse3u_sep_shared-n" class="intrnllnk">n用于低通和高通设计和= 2n对于带通和带阻滤波器,那么一个×B×1,C是1×,D等于1 × 1。

  • 对于数字滤波器,状态空间矩阵与状态向量相关x,输入u,输出y通过

    x k + 1 一个 x k + B u k y k C x k + D u k

  • 对于模拟滤波器,状态空间矩阵与状态向量相关x,输入u,输出y通过

    x ˙ 一个 x + B u y C x + D u

数据类型:

更多关于

全部折叠

限制

传递函数语法的数值不稳定性

一般来说,使用(z,磷、钾)语法来设计IIR过滤器。要分析或实现过滤器,可以使用(z,磷、钾)输出与zp2sos.如果你设计过滤器使用[b]语法,你可能会遇到数值问题。这些问题是由四舍五入错误引起的,可能发生在n低至4。下面的示例说明了这种限制。

n = 6;Wn = [2.5e6 29e6]/500e6;ftype =<年代p一个n年代tyle="color:#A020F0">“带通”;<年代p一个n年代tyle="color:#228B22">功能设计[b] =黄油(n, n, ftype);<年代p一个n年代tyle="color:#228B22">这是一个不稳定的过滤器% Zero-Pole-Gain设计(z,磷、钾)=黄油(n, n, ftype);sos = zp2sos (z,磷、钾);<年代p一个n年代tyle="color:#228B22">%显示和比较结果hfvt = fvtool (b, a, sos,<年代p一个n年代tyle="color:#A020F0">“FrequencyScale”,<年代p一个n年代tyle="color:#A020F0">“日志”);传奇(hfvt<年代p一个n年代tyle="color:#A020F0">“特遣部队设计”,<年代p一个n年代tyle="color:#A020F0">“ZPK设计”)

图1:量级响应(dB)包含一个坐标轴对象。标题为幅度响应(dB)的axis对象包含两个类型为line的对象。这些对象代表TF Design, ZPK Design.

算法

巴特沃思滤波器的幅值响应在通带内最大程度是平坦的,总体上是单调的。这种平滑是以降低滚压陡度为代价的。椭圆和切比雪夫滤波器通常在给定的滤波器顺序下提供更陡的滚降。

黄油使用五步算法:

  1. 它使用函数查找低通模拟原型极点、零点和增益<一个href="//www.ru-cchi.com/help/signal/ref/buttap.html">buttap

  2. 它将极点、零和增益转换为状态空间形式。

  3. 如果需要,它使用状态空间变换将低通滤波器转换为带通、高通或带阻滤波器,具有所需的频率约束。

  4. 对于数字滤波器的设计,它采用<一个href="//www.ru-cchi.com/help/signal/ref/bilinear.html">双线性通过带频率预翘曲的双线性变换将模拟滤波器转换为数字滤波器。仔细的频率调整使模拟滤波器和数字滤波器具有相同的频率响应幅值Wn或在w1而且w2

  5. 它根据需要将状态空间滤波器转换回它的传递函数或零极增益形式。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

之前介绍过的R2006a

另请参阅

|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代p一个nitemscope itemtype="//www.ru-cchi.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">

Baidu
map