主要内容

designfilt

设计数字滤波器

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

描述

例子

d= designfilt (分别地名称,值设计一个digitalFilter对象,d,具有响应类型分别地.的例子分别地“lowpassfir”而且“bandstopiir”.方法进一步指定筛选器名称-值对的观点.允许的规格集取决于分别地并由以下的组合组成:

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

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

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

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

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

  • 采样率是滤波器工作的频率。designfilt默认采样率为2hz。使用此值等同于使用归一化频率。

请注意

如果在命令行上指定不完整或不一致的名称-值参数集,designfilt提议开一家滤波器设计助理.助手帮助您设计过滤器和粘贴修正的MATLAB®命令行上的代码。

如果你叫designfilt从一组不正确的规范的脚本或函数,designfilt的链接发出错误消息滤波器设计助理.助手帮助您设计过滤器,并将修正后的MATLAB代码粘贴到命令行上。设计的过滤器被保存到工作区中。

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

  • 使用FVTool想象一个digitalFilterd

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

  • 看到digitalFilter获取可用的过滤和分析函数的列表digitalFilter对象。

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

例子

全部折叠

设计了一种通带频率归一化的最小次低通FIR滤波器 0 2 5 π rad /样本,阻带频率 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)包含一个坐标轴对象。标题为幅度响应(dB)的axis对象包含两个类型为line.

dataIn =兰德(1000 1);dataOut =过滤器(lpFilt dataIn);

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

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

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

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

dataIn = randn (1000 1);dataOut =过滤器(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 /样本,通频带的频率 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)包含一个坐标轴对象。标题为幅度响应(dB)的axis对象包含两个类型为line.

dataIn = randn (1000 1);dataOut =过滤器(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)包含一个坐标轴对象。标题为幅度响应(dB)的axis对象包含两个类型为line.

dataIn = randn (1000 1);dataOut =过滤器(hpFilt dataIn);

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

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

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

dataIn = randn (1000 1);dataOut =过滤器(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

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

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

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

dataIn = randn (1000 1);dataOut =过滤器(bpFilt dataIn);

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

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

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

dataIn = randn (1000 1);dataOut =过滤器(bsFilt dataIn);

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

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

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

dataIn = randn (1000 1);dataOut =过滤器(bsFilt dataIn);

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

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

图1:零阶段响应包含一个坐标轴对象。标题为Zero-phase Response的axes对象包含两个类型为line.

dataIn = randn (1000 1);dataOut =过滤器(dFilt dataIn);

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

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

图1:量级响应包含一个坐标轴对象。标题为量级响应的axis对象包含两个类型为line.

dataIn = randn (1000 1);dataOut =过滤器(hFilt dataIn);

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

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

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

dataIn = randn (1000 1);dataOut =过滤器(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分贝频率,指定为正标量。频率值必须在Nyquist范围内。

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

“CutoffFrequency2”为带通或带阻设计中较高的6分贝频率。

数据类型:

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

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

“HalfPowerFrequency2”为带通或带阻设计中较高的3分贝频率。

数据类型:

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

数据类型:

响应频率,指定为矢量。使用此变量列出任意幅值响应的滤波器具有所需振幅的频率。频率必须是单调增加的,并且在奈奎斯特范围内。向量的第一个元素必须是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”利用Kaiser窗法设计了FIR滤波器。该方法对理想滤波器的脉冲响应进行截断,并使用凯撒窗来衰减由此产生的截断振荡。

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

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

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

数据类型:字符|字符串

设计方法的选择

全部折叠

的最小阶奇偶校验“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在命令行或脚本或函数中。

命令行中的过滤器设计助手

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

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

因为这个对话框出现在您的屏幕上,所以似乎有什么问题。

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

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

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

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

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

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

系数:[-0.0036 0.0127 -0.0066 -0.0881 0.2595…0.6521 0.2595 -0.0881 -0.0066 0.0127 -0.0036]规格:FrequencyResponse: 'lowpass' impulse esponse: 'fir' SampleRate: 2000 CutoffFrequency: 650 FilterOrder: 10 DesignMethod: 'window'使用fvtool可视化过滤器使用designfilter编辑过滤器使用filter过滤数据

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

fvtool(迪)

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

这个分水岭看起来并不是特别明显。大多数频率的响应都在40分贝以上。你记得助手有一个选项,可以设置一个叫做“阻带衰减”的“幅度约束”。通过呼叫打开助手designfilt使用筛选器名称作为输入。

designfilt(迪)

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

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

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

分水岭看起来仍然不明显。衰减确实是60分贝,但频率超过900赫兹。

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

designfilt(迪)

助理重新出现。

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

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

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

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

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

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

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

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

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

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

为了测试你的函数,创建一个由两个频率为500和800赫兹的正弦信号组成的信号,并生成0.1秒的样本。作为初始猜测,五阶滤波器似乎是合理的。创建一个名为driveHPfilt.m

%脚本driveHPfilt.mFsamp = 2 e3;Fsm = 500;光纤光栅= 800;t = 0:1 / Fsamp: 0.1;sgin =罪(2 *π* Fsm * t) +罪(2 *π*光纤光栅* t);N = 5;sgout = hipassfilt (N, sgin);

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

错误消息让您可以选择打开助手来纠正MATLAB代码。点击点击这里以获得屏幕上的过滤器设计助手。

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

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

惠普= 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桌面运行。如果你用-nojvm-nodisplay,或-nodesktop选项。

版本历史

介绍了R2014a

全部展开

Baidu
map