主要内容

designfilt

设计数字滤波器

designfilt不再帮助纠正脚本或函数中对函数的调用。有关更多信息,请参见兼容性的考虑

描述

例子

d= designfilt (分别地名称,值设计一个digitalFilter对象,d,具有响应类型分别地.的例子分别地“lowpassfir”而且“bandstopiir”.属性的集合进一步指定筛选器名称-值对参数.允许的规范集取决于分别地由这些组合而成:

  • 频率约束对应于滤波器显示所需行为的频率。例子包括“PassbandFrequency”而且“CutoffFrequency”.您必须始终指定频率约束。

  • 大小限制描述滤波器在特定频率范围内的行为。例子包括“PassbandRipple”而且“StopbandAttenuation”designfilt为未指定的幅度约束提供默认值。在任意幅值设计中,必须始终指定所需幅值的矢量。

  • 过滤器订单.有些设计方法允许您指定顺序。其他人则生产最小订单设计。也就是说,它们生成满足指定约束的最小过滤器。

  • 设计方法是用来设计滤波器的算法。例子包括受约束最小二乘(“cls”)和Kaiser窗口(“kaiserwin”).对于某些规范集,有多种设计方法可供选择。在其他情况下,您可以只使用一种方法来满足所需的规范。

  • 设计方法选项是特定于给定设计方法的参数。例子包括“窗口”“窗口”方法与优化“重量”对于任意大小的等纹波设计。designfilt为未指定的设计选项提供默认值。

  • 采样率是滤波器工作的频率。designfilt默认采样率为2hz。使用这个值相当于使用标准化频率。

请注意

如果在命令行中指定了不完整或不一致的名称-值参数集,designfilt提供开设过滤器设计助理.该助手可以帮助您设计滤波器并粘贴校正后的MATLAB®命令行上的代码。

如果你打电话designfilt如果脚本或函数的规范集不正确,designfilt对象的打开链接发出错误消息过滤器设计助理.该助手帮助您设计过滤器,并将校正后的MATLAB代码粘贴到命令行上。设计的过滤器被保存到工作空间中。

  • 使用过滤器在表格中dataOut = filter(d,dataIn)对信号进行滤波digitalFilterd.对于IIR滤波器过滤器函数使用直接形式II实现。你也可以使用filtfilt而且fftfilt功能与digitalFilter对象。

  • 使用FVTool为了想象digitalFilterd

  • 类型d.Coefficients为了得到a的系数digitalFilterd.对于IIR滤波器,系数表示为二阶截面。

  • 看到digitalFilter获取可供使用的筛选和分析函数的列表digitalFilter对象。

designfilt (d让你编辑现有的数字滤镜,d.它打开一个过滤器设计助理用筛选器的规范填充,然后可以对其进行修改。这是您可以编辑的唯一方法digitalFilter对象。否则它的属性是只读的。

例子

全部折叠

设计了一种通频带归一化的最小阶低通FIR滤波器 0 2 5 π Rad /sample,阻带频率 0 3. 5 π rad/sample,通带纹波0.5 dB,阻带衰减65 dB。使用Kaiser窗口设计滤镜。想象它的大小响应。使用它来过滤随机数据的向量。

lpFilt = designfilt(“lowpassfir”“PassbandFrequency”, 0.25,...“StopbandFrequency”, 0.35,“PassbandRipple”, 0.5,...“StopbandAttenuation”, 65,“DesignMethod”“kaiserwin”);fvtool (lpFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel归一化频率(乘以pi blank r a d / s a m p le), ylabel Magnitude (dB)包含2个类型为line的对象。

dataIn = rand(1000,1);dataOut = filter(lpFilt,dataIn);

设计一个8阶低通IIR滤波器,通带频率35khz,通带纹波0.2 dB。指定200khz的采样率。可视化滤波器的幅值响应。

lpFilt = designfilt(“lowpassiir”“FilterOrder”8...“PassbandFrequency”35岁的e3,“PassbandRipple”, 0.2,...“SampleRate”200年e3);fvtool (lpFilt)

图1:幅度响应(dB)包含一个轴对象。标题为Magnitude Response (dB), xlabel Frequency (kHz), ylabel Magnitude (dB)的axis对象包含2个类型为line的对象。

使用你设计的滤波器来过滤1000个样本的随机信号。

dataIn = randn(1000,1);dataOut = filter(lpFilt,dataIn);

输出滤波器系数,表示为二阶部分。

sos = lpFilt。系数
sos =4×60.2666 0.5333 0.2666 1.0000 -0.8346 0.9073 0.1943 0.3886 0.1943 1.0000 -0.9586 0.7403 0.1012 0.2023 0.1012 1.0000 -1.1912 0.5983 0.0318 0.0636 0.0318 1.0000 -1.3810 0.5090

设计一种阻带频率归一化的最小阶高通FIR滤波器 0 2 5 π Rad /sample,通带频率 0 3. 5 π rad/sample,通带纹波0.5 dB,阻带衰减65 dB。使用Kaiser窗口设计滤镜。想象它的大小响应。用它来过滤1000个随机数据样本。

hpFilt = designfilt(“highpassfir”“StopbandFrequency”, 0.25,...“PassbandFrequency”, 0.35,“PassbandRipple”, 0.5,...“StopbandAttenuation”, 65,“DesignMethod”“kaiserwin”);fvtool (hpFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel归一化频率(乘以pi blank r a d / s a m p le), ylabel Magnitude (dB)包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(hpFilt,dataIn);

设计一个8阶的高通IIR滤波器,通频带频率75 kHz,通带纹波0.2 dB。指定200khz的采样率。可视化滤波器的幅值响应。将过滤器应用于随机数据的1000个样本向量。

hpFilt = designfilt(“highpassiir”“FilterOrder”8...“PassbandFrequency”75年e3,“PassbandRipple”, 0.2,...“SampleRate”200年e3);fvtool (hpFilt)

图1:幅度响应(dB)包含一个轴对象。标题为Magnitude Response (dB), xlabel Frequency (kHz), ylabel Magnitude (dB)的axis对象包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(hpFilt,dataIn);

设计一个20阶带通FIR滤波器,低截止频率500hz,高截止频率560hz。采样率为1500hz。可视化滤波器的幅值响应。用它来过滤包含1000个样本的随机信号。

bpFilt = designfilt(“bandpassfir”“FilterOrder”, 20岁,...“CutoffFrequency1”, 500,“CutoffFrequency2”, 560,...“SampleRate”, 1500);fvtool (bpFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB),其中包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(bpFilt,dataIn);

输出滤波器系数。

b = bpFilt。系数
b =1×21-0.0113 0.0067 0.0125 -0.0445 0.0504 0.0101 -0.1070 0.1407 -0.0464 -0.1127 0.1913 -0.1127 -0.0464 0.1407 -0.1070 0.0101 0.0504 -0.0445 0.0125 0.0067 -0.0113

设计一个20阶带通IIR滤波器,低3db频率500hz,高3db频率560hz。采样率为1500hz。可视化滤波器的频率响应。用它来过滤1000个样本的随机信号。

bpFilt = designfilt(“bandpassiir”“FilterOrder”, 20岁,...“HalfPowerFrequency1”, 500,“HalfPowerFrequency2”, 560,...“SampleRate”, 1500);fvtool (bpFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB),其中包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(bpFilt,dataIn);

设计一个20阶带阻FIR滤波器,低截止频率500hz,高截止频率560hz。采样率为1500hz。可视化滤波器的幅值响应。用它来过滤1000个随机数据样本。

bsFilt = designfilt(“bandstopfir”“FilterOrder”, 20岁,...“CutoffFrequency1”, 500,“CutoffFrequency2”, 560,...“SampleRate”, 1500);fvtool (bsFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB),其中包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(bsFilt,dataIn);

设计一个20阶带阻IIR滤波器,低3db频率500hz,高3db频率560hz。采样率为1500hz。可视化滤波器的幅值响应。用它来过滤1000个随机数据样本。

bsFilt = designfilt(“bandstopiir”“FilterOrder”, 20岁,...“HalfPowerFrequency1”, 500,“HalfPowerFrequency2”, 560,...“SampleRate”, 1500);fvtool (bsFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB),其中包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(bsFilt,dataIn);

设计一个全频带7阶微分器滤波器。显示其零相位响应。用它来过滤随机数据的1000个样本向量。

dFilt = designfilt(“differentiatorfir”“FilterOrder”7);fvtool (dFilt“MagnitudeDisplay”“零”

图1:零阶段响应包含一个轴对象。axis对象的标题为zero phase Response, xlabel归一化频率(乘以pi blank r a d / s a mpl e), ylabel振幅包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(dFilt,dataIn);

设计一个18阶希尔伯特变压器。指定的归一化过渡宽度 0 2 5 π rad /样品。以线性单位显示滤波器的幅值响应。用它来过滤随机数据的1000个样本向量。

hFilt = designfilt(“hilbertfir”“FilterOrder”, 18岁,“TransitionWidth”, 0.25);fvtool (hFilt“MagnitudeDisplay”“级”

图1:Magnitude Response包含一个axis对象。axis对象的标题为Magnitude Response, xlabel归一化频率(乘以pi空白r a d / s a m p le), ylabel Magnitude包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(hFilt,dataIn);

给你一个1khz的采样信号。设计一个滤波器,可以阻止频率在100hz ~ 350hz之间和频率大于400hz的频率。指定筛选器的顺序为60。可视化滤波器的频率响应。用它来过滤1000个样本的随机信号。

mbFilt = designfilt(“arbmagfir”“FilterOrder”现年60岁的...“频率”0:50:500,“振幅”,[1 1 1 1 0 0 0 0 0 1 1 0 0],...“SampleRate”, 1000);fvtool (mbFilt)

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel Frequency (Hz), ylabel Magnitude (dB),其中包含2个类型为line的对象。

dataIn = randn(1000,1);dataOut = filter(mbFilt,dataIn);

输入参数

全部折叠

筛选器响应和类型,指定为字符向量或字符串标量。

选择此选项可设计有限脉冲响应(FIR)低通滤波器。本例使用表中的第五个规范集。

D = designfilt(“lowpassfir”...响应类型“FilterOrder”25岁的...过滤器顺序%“PassbandFrequency”, 400,...%频率约束“StopbandFrequency”, 550,...“DesignMethod”“ls”...%设计方法“PassbandWeight”, 1...%设计方法选项“StopbandWeight”2,...“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计无限脉冲响应(IIR)低通滤波器。本例使用表中的第一个规范集。

D = designfilt(“lowpassiir”...响应类型“PassbandFrequency”, 400,...%频率约束“StopbandFrequency”, 550,...“PassbandRipple”4...幅度约束“StopbandAttenuation”现年55岁的...“DesignMethod”“ellip”...%设计方法“MatchExactly”“通频带”...%设计方法选项“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计有限脉冲响应(FIR)高通滤波器。本例使用表中的第一个规范集。

D = designfilt(“highpassfir”...响应类型“StopbandFrequency”, 400,...%频率约束“PassbandFrequency”, 550,...“StopbandAttenuation”现年55岁的...幅度约束“PassbandRipple”4...“DesignMethod”“kaiserwin”...%设计方法“ScalePassband”假的,...%设计方法选项“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计无限脉冲响应(IIR)高通滤波器。本例使用表中的第一个规范集。

D = designfilt(“highpassiir”...响应类型“StopbandFrequency”, 400,...%频率约束“PassbandFrequency”, 550,...“StopbandAttenuation”现年55岁的...幅度约束“PassbandRipple”4...“DesignMethod”“cheby1”...%设计方法“MatchExactly”阻带的...%设计方法选项“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计有限脉冲响应(FIR)带通滤波器。本例使用表中的第四个规范集。

D = designfilt(“bandpassfir”...响应类型“FilterOrder”, 86,...过滤器顺序%“StopbandFrequency1”, 400,...%频率约束“PassbandFrequency1”, 450,...“PassbandFrequency2”, 600,...“StopbandFrequency2”, 650,...“DesignMethod”“ls”...%设计方法“StopbandWeight1”, 1...%设计方法选项“PassbandWeight”2,...“StopbandWeight2”3,...“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计无限脉冲响应(IIR)带通滤波器。本例使用表中的第一个规范集。

D = designfilt(“bandpassiir”...响应类型“StopbandFrequency1”, 400,...%频率约束“PassbandFrequency1”, 450,...“PassbandFrequency2”, 600,...“StopbandFrequency2”, 650,...“StopbandAttenuation1”现年40岁的...幅度约束“PassbandRipple”, 1...“StopbandAttenuation2”, 50岁,...“DesignMethod”“ellip”...%设计方法“MatchExactly”“通频带”...%设计方法选项“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计有限脉冲响应(FIR)带阻滤波器。本例使用表中的第四个规范集。

D = designfilt(“bandstopfir”...响应类型“FilterOrder”32岁的...过滤器顺序%“PassbandFrequency1”, 400,...%频率约束“StopbandFrequency1”, 500,...“StopbandFrequency2”, 700,...“PassbandFrequency2”, 850,...“DesignMethod”“ls”...%设计方法“PassbandWeight1”, 1...%设计方法选项“StopbandWeight”3,...“PassbandWeight2”5,...“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计无限脉冲响应(IIR)带阻滤波器。本例使用表中的第一个规范集。

D = designfilt(“bandstopiir”...响应类型“PassbandFrequency1”, 400,...%频率约束“StopbandFrequency1”, 500,...“StopbandFrequency2”, 700,...“PassbandFrequency2”, 850,...“PassbandRipple1”, 1...幅度约束“StopbandAttenuation”现年55岁的...“PassbandRipple2”, 1...“DesignMethod”“ellip”...%设计方法“MatchExactly”“两个”...%设计方法选项“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”(如有需要),或任何频率限制,designfilt抛出错误。

  • 如果忽略幅度约束,designfilt使用默认值。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

选择此选项可设计有限脉冲响应(FIR)微分器滤波器。本例使用表中的第二个规范集。

D = designfilt(“differentiatorfir”...响应类型“FilterOrder”现年42岁的...过滤器顺序%“PassbandFrequency”, 400,...%频率约束“StopbandFrequency”, 500,...“DesignMethod”“equiripple”...%设计方法“PassbandWeight”, 1...%设计方法选项“StopbandWeight”4...“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”,或设计部分带微分器时的任何频率约束,designfilt抛出错误。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

过滤器顺序参数名称 频率约束参数名称 量级约束参数名称 “DesignMethod”参数值 设计选项参数名称

“FilterOrder”

N/A

N/A

“equiripple”(默认)

N/A

“ls”

N/A

“FilterOrder”

“PassbandFrequency”

“StopbandFrequency”

N/A

“equiripple”(默认)

“PassbandWeight”

“StopbandWeight”

“ls”

N/A

选择这个选项来设计一个有限脉冲响应(FIR)希尔伯特变压器滤波器。本示例使用表中设置的规范。

D = designfilt(“hilbertfir”...响应类型“FilterOrder”12...过滤器顺序%“TransitionWidth”, 400,...%频率约束“DesignMethod”“ls”...%设计方法“SampleRate”, 2000)%抽样率

  • 如果你省略了“FilterOrder”“TransitionWidth”designfilt抛出错误。

  • 如果你省略了“DesignMethod”designfilt希尔伯特变压器采用默认设计方法。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

过滤器顺序参数名称 频率约束参数名称 量级约束参数名称 “DesignMethod”参数值 设计选项参数名称

“FilterOrder”

“TransitionWidth”

N/A

“equiripple”(默认)

N/A

“ls”

N/A

选择此选项可设计具有任意幅度响应的有限脉冲响应(FIR)滤波器。本例使用表中的第二个规范集。

D = designfilt(“arbmagfir”...响应类型“FilterOrder”, 88,...过滤器顺序%“NumBands”4...%频率约束“BandFrequencies1”20 [0],...“BandFrequencies2”(25 40),...“BandFrequencies3”(65年45),...“BandFrequencies4”(70 100),...“BandAmplitudes1”(2 - 2),...幅度约束“BandAmplitudes2”[0 0],...“BandAmplitudes3”[1],...“BandAmplitudes4”[0 0],...“DesignMethod”“ls”...%设计方法“BandWeights1”[1] / 10...%设计方法选项“BandWeights2”(3 - 1),...“BandWeights3”(2 - 4),...“BandWeights4”(5 - 1),...“SampleRate”, 200)%抽样率

  • 如果你省略了“FilterOrder”,或任何频率或幅度限制,designfilt抛出错误。

  • 如果你省略了“DesignMethod”designfilt为规格集使用默认设计方法。

  • 如果省略了设计方法选项,designfilt使用所选设计方法的默认值。

  • 如果你省略了“SampleRate”designfilt设置为2hz。

过滤器顺序参数名称 频率约束参数名称 量级约束参数名称 “DesignMethod”参数值 设计选项参数名称

“FilterOrder”

“频率”

“振幅”

“freqsamp”(默认)

“窗口”

“equiripple”

“重量”

“ls”

“重量”

“FilterOrder”

“NumBands”

“BandFrequencies1”

...

“BandFrequenciesN”

“BandAmplitudes1”

...

“BandAmplitudesN”

“equiripple”(默认)

“BandWeights1”

...

“BandWeightsN”

“ls”

“BandWeights1”

...

“BandWeightsN”

数据类型:字符|字符串

数字滤波器,指定为digitalFilter对象生成的designfilt.使用此输入更改现有的规范digitalFilter

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:FilterOrder = 20, CutoffFrequency = 0.4足以指定一个低通FIR滤波器。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

例子:“CutoffFrequency”“FilterOrder”,20日,0.4足以指定一个低通FIR滤波器。

不是所有的名称-值组合都有效。有效的组合取决于您需要的滤波器响应以及您的设计的频率和幅度限制。

过滤器订单

全部折叠

筛选器顺序,指定为正整数标量。

数据类型:

IIR设计的分子阶数,指定为正整数标量。

数据类型:

IIR设计的分母顺序,指定为正整数标量。

数据类型:

频率约束

全部折叠

通带频率,指定为正标量。频率值必须在Nyquist范围内。

“PassbandFrequency1”是带通或带阻设计的较低通频带频率。

“PassbandFrequency2”是带通或带阻设计的较高通频带频率。

数据类型:

止带频率,指定为正标量。频率值必须在Nyquist范围内。

“StopbandFrequency1”低阻带频率是带通还是带阻设计

“StopbandFrequency2”是带通或带阻设计的较高阻带频率。

数据类型:

6-dB频率,指定为正标量。频率值必须在Nyquist范围内。

“CutoffFrequency1”是带通或带阻设计中较低的6分贝频率。

“CutoffFrequency2”为带通或带阻设计的更高的6 db频率。

数据类型:

3-dB频率,指定为正标量。频率值必须在Nyquist范围内。

“HalfPowerFrequency1”是带通或带阻设计中较低的3分贝频率。

“HalfPowerFrequency2”为带通或带阻设计的更高3db频率。

数据类型:

希尔伯特变压器通带和阻带之间过渡区域的宽度,用正标量表示。

数据类型:

响应频率,以矢量表示。使用此变量可列出任意幅值响应滤波器具有所需幅值的频率。频率必须是单调增加的,并且位于奈奎斯特范围内。向量的第一个元素必须是0或- - - - - -f年代/ 2,在那里f年代是抽样率,它的最后一个元素必须是f年代/ 2.如果不指定抽样率,designfilt使用默认值2hz。

数据类型:

多频带设计中的频带数,指定为不大于10的正整数标量。

数据类型:

多频带响应频率,指定为数值向量。“BandFrequenciesi”,在那里从1到“NumBands”的频率向量多频带设计的频带具有期望的值,“BandAmplitudesi”“NumBands”最多10个。频率必须位于奈奎斯特范围内,并且必须以单调递增的顺序指定。相邻频带在连接处的振幅必须相同。

数据类型:

大小限制

全部折叠

通带纹波,指定为用分贝表示的正标量。

“PassbandRipple1”是带阻设计的低带通带纹波。

“PassbandRipple2”是带阻设计的高频带通带纹波。

数据类型:

止带衰减,指定为用分贝表示的正标量。

“StopbandAttenuation1”是带通设计的低带阻带衰减。

“StopbandAttenuation2”是带通设计的高带阻带衰减。

数据类型:

任意幅值响应滤波器的期望响应幅值,用矢量表示。用线性单位表示振幅。向量的长度必须与“频率”

数据类型:

多波段响应振幅,指定为数值向量。“BandAmplitudesi”,在那里从1到“NumBands”中所期望的幅值的向量多波段设计的波段。“NumBands”最多10个。用线性单位表示振幅。“BandAmplitudesi”长度必须和“BandFrequenciesi”.相邻频带在连接处的振幅必须相同。

数据类型:

设计方法

全部折叠

设计方法,指定为字符向量或字符串标量。设计方法的选择取决于您指定的频率和幅度约束集。

  • “黄油”设计了巴特沃斯IIR滤波器。巴特沃斯滤波器具有平滑的单调频率响应,在通带内最大程度地平坦。他们牺牲滚滚的陡度来换取平坦。

  • “cheby1”设计了一种切比雪夫I型IIR滤波器。切比雪夫I型滤波器的频率响应在通带是等纹波的,在阻带是最大的平坦的。它们的通带波纹随着滚转陡度的增加而增加。

  • “cheby2”设计了切比雪夫II型IIR滤波器。切比雪夫II型滤波器的频率响应在通带最大平坦,在阻带等纹波。

  • “cls”利用约束最小二乘设计FIR滤波器。该方法最小化了指定的任意分段线性函数和滤波器的幅度响应之间的差异。同时,它允许您设置通带纹波和阻带衰减的约束。

  • “ellip”设计了一种椭圆IIR滤波器。椭圆滤波器的频率响应在通带和阻带都是等纹波的。

  • “equiripple”利用Parks-McClellan算法设计了一个等纹波FIR滤波器。等纹波滤波器具有使所有波段的最大纹波幅度最小化的频率响应。

  • “freqsamp”通过对频率响应进行均匀采样并进行傅里叶反变换,设计了一个任意幅值响应的FIR滤波器。

  • “kaiserwin”利用凯撒窗法设计了FIR滤波器。该方法截断理想滤波器的脉冲响应,并使用凯泽窗来衰减所产生的截断振荡。

  • “ls”利用最小二乘设计FIR滤波器。该方法最小化了指定的任意分段线性函数和滤波器的幅度响应之间的差异。

  • “maxflat”设计了一个最大平面FIR滤波器。这些滤波器具有平滑的单调频率响应,在通带中最大程度地平坦。

  • “窗口”使用最小二乘近似来计算滤波器系数,然后平滑脉冲响应“窗口”

数据类型:字符|字符串

设计方法选项

全部折叠

a的最小阶奇偶性“kaiserwin”设计,指定为“任何”“甚至”.当你设置“MinOrder”“甚至”designfilt返回偶数阶的最小阶过滤器。当你设置“MinOrder”“任何”,返回的过滤器可以是偶数或奇数,以较小的为准。

数据类型:字符|字符串

窗口,指定为长度向量N+ 1,在那里N是过滤器的顺序。“窗口”还可以与指定用于生成窗口的函数的窗口名称或函数句柄配对。任何这样的函数都必须N+ 1作为第一个输入。可以通过指定单元格数组来传递其他输入。默认情况下,“窗口”是空向量吗“freqsamp”设计方法及@hamming“窗口”设计方法。

有关可用窗口的列表,请参见窗户

例子:“窗口”,损害(N + 1)而且“窗口”,(1-cos(2 *π* (0:N) / N)) / 2两者都指定了一个Hann窗口,用于排序过滤器N

例子:“窗口”、“汉明”指定所需顺序的汉明窗口。

例子:“窗口”,@mywindow允许您定义自己的窗口函数。

例子:“窗口”,{@kaiser, 0.5}指定一个形状参数为0.5的所需顺序的Kaiser窗口。

数据类型:|字符|字符串|function_handle|细胞

精确匹配的波段,指定为阻带的“通频带”,或“两个”“两个”仅对椭圆设计方法可用,其中它是默认值。阻带的的默认值是“黄油”而且“cheby2”方法。“通频带”的默认值。“cheby1”

数据类型:字符|字符串

通带偏移量,指定为用分贝表示的正标量。“PassbandOffset”指定通带中的滤波器增益。

例子:“PassbandOffset”,0结果在通带中有单位增益的滤波器。

例子:“PassbandOffset”,2滤波器的通带增益为2 dB或1.259。

数据类型:

缩放通带,指定为逻辑标量。当你设置“ScalePassband”真正的时,通带被缩放,加窗后,使滤波器在零频率时有单位增益。

例子:{@kaiser, 0.1}‘窗口’,‘ScalePassband’,真的帮助指定一个滤波器,其在零频率下的幅值响应正好为0db。当您指定时,情况并非如此“ScalePassband”,假的.要验证,请将过滤器可视化fvtool放大。

数据类型:逻辑

零相位,指定为逻辑标量。当你设置“ZeroPhase”真正的时,得到的滤波器的零相响应始终为正。这允许您对结果执行谱分解,并从中获得最小相位滤波器。

数据类型:逻辑

通带优化权重,指定为正标量。

“PassbandWeight1”为带阻FIR设计的低带通带优化权值。

“PassbandWeight2”为带阻FIR设计的高频带通带优化权值。

数据类型:

止带优化权重,指定为正标量。

“StopbandWeight1”为带通FIR设计的低带阻带优化权值。

“StopbandWeight2”为带通FIR设计的高带阻带优化权重。

数据类型:

优化权重,指定为正标量或相同长度的向量“振幅”

数据类型:

多带权重,指定为一组正标量或向量。“BandWeightsi”,在那里从1到“NumBands”类的优化权值是一个标量或向量多波段设计的波段。如果指定为向量,“BandWeightsi”长度必须和“BandAmplitudesi”

数据类型:

采样率

全部折叠

采样率,用正标量表示,单位为赫兹。要使用归一化频率,请设置“SampleRate”到2,或者直接省略它。

数据类型:

输出参数

全部折叠

数字滤波器,返回为digitalFilter对象。

更多关于

全部折叠

过滤器设计助理

如果指定的设计参数不完整或不一致,designfilt提供打开过滤器设计助手。

的参数描述中分别地这里有所有可用响应类型的有效规范集的完整列表。)

如果你打电话,助理会有不同的反应designfilt在命令行或脚本或函数中。

命令行过滤器设计助手

给你一个2千赫的采样信号。你被要求设计一个低通FIR滤波器,抑制高于650赫兹的频率成分。“截止频率”听起来像是一个很好的规格参数。在MATLAB命令行中键入这段代码。

Fsamp = 2e3;Fctff = 650;Dee = designfilt(“lowpassfir”“CutoffFrequency”Fctff,...“SampleRate”, Fsamp);

由于此对话框出现在屏幕上,因此似乎有问题。

“过滤器设计助手”对话框窗口

你点击是的并获得一个提供生成代码的新对话框。您可以看到之前定义的变量已经插入到预期的位置。

滤波器设计助手对话框低通FIR设计

在研究了提供的一些选项之后,您决定测试修正后的过滤器。你点击好吧并在命令行上获取此代码。

designfilt (“lowpassfir”“FilterOrder”10...“CutoffFrequency”Fctff,“SampleRate”, 2000);

输入筛选器的名称将重复对话框中的信息。

dee = digitalFilter属性:系数:[-0.0036 0.0127 -0.0066 -0.0881 0.2595…0.6521 0.2595 -0.0881 -0.0066 0.0127 -0.0036]规格:FrequencyResponse: 'lowpass' ImpulseResponse: 'fir' SampleRate: 2000 CutoffFrequency: 650 FilterOrder: 10 DesignMethod: 'window'使用fvtool可视化过滤器使用designfilt编辑过滤器使用过滤器过滤数据

您调用FVTool得到一张图的频率响应。

fvtool(迪)

使用滤波器可视化工具绘制震级响应图

截线看起来并不是特别明显。大多数频率的响应都在40db以上。您还记得助手有一个选项来设置称为“阻带衰减”的“幅度约束”。通过呼叫打开助手designfilt使用过滤器名称作为输入。

designfilt(迪)

单击大小限制下拉菜单,选择通带纹波和阻带衰减.你可以看到设计方法已经从窗口FIR约束最小二乘.默认衰减值为60 dB,大于40 dB。点击好吧并可视化生成的过滤器。

Dee = designfilt(“lowpassfir”“FilterOrder”10...“CutoffFrequency”, 650,“PassbandRipple”, 1...“StopbandAttenuation”现年60岁的“SampleRate”, 2000);fvtool(迪)

使用滤波器可视化工具与通带纹波和阻带衰减的幅度响应

截线看起来仍然不明显。衰减确实是60分贝,但频率高于900赫兹。

再次调用designfilt使用过滤器作为输入。

designfilt(迪)

店员又出现了。

滤波器设计助手对话框修改低通FIR设计

要缩小接受频率和拒绝频率之间的区别,可以增加或更改滤波器的阶数频率约束截止(6dB)频率通带和阻带频率.如果你把滤镜的顺序从10改为50,你会得到一个更清晰的滤镜。

Dee = designfilt(“lowpassfir”“FilterOrder”, 50岁,...“CutoffFrequency”, 650,“PassbandRipple”, 1...“StopbandAttenuation”现年60岁的“SampleRate”, 2000);fvtool(迪)

使用滤波器可视化工具增加滤波器顺序的幅度响应

一个小实验表明,通过将通频带和阻频带频率分别设置为600hz和700hz,可以获得类似的滤波器。

Dee = designfilt(“lowpassfir”“PassbandFrequency”, 600,...“StopbandFrequency”, 700,“PassbandRipple”, 1...“StopbandAttenuation”现年60岁的“SampleRate”, 2000);fvtool(迪)

使用滤波器可视化工具修改通带和阻带频率的幅度响应

脚本或函数中的过滤器设计助手

给你一个2千赫的采样信号。你被要求设计一个高通滤波器,阻止频率低于700hz。你不需要关心信号的相位,你需要使用低阶滤波器。因此,IIR滤波器似乎是足够的。您不确定哪种筛选顺序是最好的,因此编写了一个接受该顺序作为输入的函数。打开MATLAB编辑器并创建文件。

函数hipassfilt(Order,dataIn) hpFilter = designfilt(“highpassiir”“FilterOrder”N);dataOut = filter(hpFilter,dataIn);结束

为了测试您的功能,创建一个由频率为500和800 Hz的两个正弦波组成的信号,并生成0.1 s的样本。作为最初的猜测,五阶滤波器似乎是合理的。创建一个名为driveHPfilt.m

%脚本driveHPfilt.mFsamp = 2e3;Fsm = 500;Fbg = 800;t = 0:1/Fsamp:0.1;sin(2*pi*Fsm*t)+sin(2*pi*Fbg*t);N = 5;sgout = hipassfilt(N,sgin);

在命令行上运行脚本时,会得到一条错误消息。

错误消息让您选择打开一个助手来更正MATLAB代码。点击点击这里让滤镜设计助手出现在你的屏幕上。

用于高通IIR设计的滤波器设计助手对话框

您可以看到问题所在:您没有指定频率约束。你还忘了设置抽样率。经过试验,您发现您可以指定频率的单位作为赫兹通带频率等于700hz,和输入Fs等于2000赫兹。的设计方法改变从巴特沃斯切比雪夫I型.你点击好吧然后在命令行中获取。

HP = designfilt(“highpassiir”“FilterOrder”N...“PassbandFrequency”, 700,“PassbandRipple”, 1...“SampleRate”, 2000);

digitalFilter对象惠普保存到工作区。根据您的设计约束,您可以更改您的规范集。

过滤器设计助手首选项

你可以设置designfilt永远不要提供过滤器设计助手。此操作设置一个MATLAB首选项,可以使用该首选项取消设置setpref

  • 使用setpref(‘dontshowmeagain’,‘filterDesignAssistant’,假)每次都让我当助理。使用此命令,您可以在禁用该助手后再次获得它。

  • 使用setpref(‘dontshowmeagain’,‘filterDesignAssistant’,真的)永久禁用助手。您也可以点击不再显示此消息在初始对话框中。

你可以设置designfilt总是在没有要求的情况下纠正错误的规格。此操作设置一个MATLAB首选项,可以通过使用取消设置setpref

  • 使用setpref(‘dontshowmeagain’,‘filterDesignAssistantCodeCorrection’,假)designfilt更正你的MATLAB代码而不要求确认。您也可以点击总是接受在确认对话框中。

  • 使用setpref(‘dontshowmeagain’,‘filterDesignAssistantCodeCorrection’,真的)为了确保designfilt只有当您确认想要更改时,才会更正MATLAB代码。使用此命令,可以取消单击的效果总是接受在确认对话框中。

故障排除

在某些情况下,给定一组无效的规范,designfilt不通过对话框或错误消息中的链接提供“过滤器设计助手”。

  • 如果您使用从MATLAB工具条或按下的代码段求值,则不提供助手按Ctrl + Enter.(见把你的文件分成几个部分以获取更多信息。)

  • 如果您的代码有多个调用,则不会为您提供助手designfilt,至少有一个是不正确的,而且

    • 您可以将代码粘贴到命令行上并通过按下执行它输入

    • 在编辑器中选择代码并按下执行F9

  • 如果你参选,你不会有助手designfilt使用匿名函数。(见匿名函数以获取更多信息。)例如,该输入提供了一个助手。

    D = designfilt(“lowpassfir”“CutoffFrequency”, 0.6)
    这个输入不是。
    myFilterDesigner = @designfilt;d = myFilterDesigner(“lowpassfir”“CutoffFrequency”, 0.6)

  • 如果你参选,你不会有助手designfilt使用eval.例如,该输入提供了一个助手。

    D = designfilt(“lowpassfir”“CutoffFrequency”, 0.6)
    这个输入不是。
    myFilterDesigner =...sprintf (“designfilt(“% s”、“CutoffFrequency % f)”...“lowpassfir”, 0.6);d = eval(myFilterDesigner)

过滤器设计助手需要Java®软件和MATLAB桌面运行。运行MATLAB时不万博1manbetx支持-nojvm-nodisplay,或-nodesktop选项。

版本历史

在R2014a中引入

全部展开