主要内容

设计过滤器

设计数字滤波器

描述

实例

D= Designfilt(resp,名称、值)设计DigitalFilter.对象D,具有响应类型resp. 使用一组名称、值对。允许的规范集取决于响应类型,resp,并由以下各项的组合组成:

  • 频率限制对应于滤波器表现出所需行为的频率。例子包括'通带频率''截止频率'.(参见下面的完整列表名称-值对参数)必须始终指定频率约束。

  • 震级限制描述滤波器在特定频率范围内的行为。例子包括'通带波纹''绷带脱垂'.(参见下面的完整列表名称-值对参数.)设计过滤器提供左下限制的幅度约束的默认值。在任意幅度设计中,您必须始终指定所需幅度的向量。

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

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

  • 设计选项是特定于给定设计方法的参数。例子包括''为了“窗口”方法与优化'砝码'用于任意大小等纹波设计。(参见下面的完整列表名称-值对参数.)设计过滤器为未指定的设计选项提供默认值。

  • 'SampleRate'为滤波器工作的频率。设计过滤器具有2 Hz的默认采样率。使用此值相当于使用标准化频率。

笔记

如果在命令行中指定了一组不完整或不一致的名称-值对,设计过滤器提议开设过滤器设计助理. 助手帮助您设计过滤器并粘贴校正后的MATLAB®命令行上的代码。

如果你打电话设计过滤器从一组不正确的规范的脚本或函数,设计过滤器发出带有链接的错误消息以打开过滤器设计助理。助手帮助您设计过滤器,注释掉函数或脚本中的错误代码,并将更正后的MATLAB代码粘贴到下一行。

  • 使用过滤器在形式上数据输出=过滤器(d,数据输入)用信号滤波器过滤信号DigitalFilter.,D.对于IIR过滤器过滤器函数使用直接的form II实现。

  • 使用FVTool想象DigitalFilter.,D

  • 类型d、 系数求a的系数DigitalFilter.,D.对于IIR过滤器coefficients are expressed as second-order sections.

  • DigitalFilter.有关可用于的筛选和分析功能的列表,请参见DigitalFilter.物体。

设计过滤器(D)允许您编辑现有的数字过滤器,D.它打开了一个过滤器设计助理填充过滤器的规格,然后您可以修改。这是您可以编辑的唯一方法DigitalFilter.对象。否则,其属性为只读。

例子

全部崩溃

设计一种通带频率归一化的最小阶低通FIR滤波器 0 2. 5. π rad/s,阻带频率 0 3. 5. π rad/s,通带纹波0.5 dB,阻带衰减65 dB。使用Kaiser窗口设计滤波器。可视化其幅度响应。使用它过滤随机数据向量。

lpFilt = designfilt (“lowpassfir”,“通带频率”, 0.25,...“阻带频率”, 0.35,'passbandropple',0.5,...“止损绷带”,65,“设计方法”,“kaiserwin”); fvtool(lpFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

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

lpFilt = designfilt (“lowpassiir”,“过滤器订单”,8,...“通带频率”,35e3,'passbandropple',0.2,...“SampleRate”,200e3);fvtool(lpFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

使用您设计的过滤器过滤1000样本随机信号。

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

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

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.12 1.0000 -1.1912 0.5983 0.0318 0.0636 0.0318 0.090 0.03118 1.0000 -13811 0.5090

设计一种具有归一化阻带频率的最小阶高通FIR滤波器 0 2. 5. π rad/s,通带频率 0 3. 5. π rad/s,通带纹波0.5 dB,阻带衰减65 dB。使用Kaiser窗口设计滤波器。可视化其幅度响应。使用它过滤1000个随机数据样本。

hpFilt=设计过滤器(“highpassfir”,“阻带频率”, 0.25,...“通带频率”, 0.35,'passbandropple',0.5,...“止损绷带”,65,“设计方法”,“kaiserwin”);fvtool (hpFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

使用订单8,通带频率75 kHz和通带纹波0.2 dB设计高通IIR滤波器。指定采样率为200khz。可视化过滤器的幅度响应。将过滤器应用于随机数据的1000样本矢量。

hpFilt=设计过滤器(“highpassiir”,“过滤器订单”,8,...“通带频率”,75e3,'passbandropple',0.2,...“SampleRate”,200e3);fvtool(hpFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

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

bpFilt=设计过滤器(“班德帕斯菲尔”,“过滤器订单”,20,...“CutoffFrequency1”,500,“CutoffFrequency2”,560,...“SampleRate”,1500); fvtool(bpFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

输出滤波器系数。

b=过滤系数
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滤波器,低3-dB频率为500 Hz,高3-dB频率为560 Hz。采样率为1500 Hz。可视化滤波器的频率响应。使用它过滤1000个采样的随机信号。

bpFilt=设计过滤器(“bandpassiir”,“过滤器订单”,20,...“HalfPowerFrequency1”,500,“HalfPowerFrequency2”,560,...“SampleRate”,1500); fvtool(bpFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

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

bsFilt=设计过滤器(“bandstopfir”,“过滤器订单”,20,...“CutoffFrequency1”,500,“CutoffFrequency2”,560,...“SampleRate”, 1500);fvtool (bsFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

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

bsFilt=设计过滤器(“bandstopiir”,“过滤器订单”,20,...“HalfPowerFrequency1”,500,“HalfPowerFrequency2”,560,...“SampleRate”, 1500);fvtool (bsFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

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

dFilt=设计过滤器(“Differentiorfir”,“过滤器订单”7);fvtool (dFilt“震级显示”,“零相位”)

Figure Filter Visualization Tool-零相位响应包含轴和uitoolbar、uimenu类型的其他对象。标题为零相位响应的轴包含2个line类型的对象。

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

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

hFilt = designfilt (“hilbertfir”,“过滤器订单”,18,“过渡宽度”,0.25); fvtool(hFilt,“震级显示”,“级”)

图形过滤器可视化工具-幅值响应包含uitoolbar、uimenu类型的轴和其他对象。标题为幅值响应的轴包含2个line类型的对象。

数据输入=随机数(1000,1);数据输出=滤波器(hFilt,数据输入);

您收到的信号采样频率为1 kHz。设计一个滤波器,使频率停止在100 Hz和350 Hz之间,且频率大于400 Hz。指定滤波器阶数为60。可视化滤波器的频率响应。使用它来过滤1000个采样的随机信号。

mbFilt=设计过滤器(“阿玛格菲尔”,“过滤器订单”,60,...“频率”,0:50:500,“振幅”,[1 1 1 0 0 0 1 1 0 0],...“SampleRate”,1000); fvtool(mbFilt)

Figure Filter Visualization Tool-幅值响应(dB)包含轴和uitoolbar、uimenu类型的其他对象。标题幅值响应(dB)的轴包含2个line类型的对象。

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

输入参数

全部崩溃

筛选器响应和类型,指定为字符向量或字符串标量。单击resp展开允许的规范集表。

“lowpassfir”

“lowpassiir”

“highpassfir”

“highpassiir”

“班德帕斯菲尔”

“bandpassiir”

“bandstopfir”

“bandstopiir”

“Differentiorfir”

“hilbertfir”

“阿玛格菲尔”

数据类型:字符|字符串

数字滤波器,指定为DigitalFilter.由生成的对象设计过滤器.使用此输入更改现有的规范DigitalFilter.

名称-值对参数

指定可选的逗号分隔的字符对名称、值参数。名称是参数名称和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

例子:“滤波器顺序”,20,“截止频率”,0.4足以指定一个低通FIR滤波器。

并非所有的名称、值对是有效的。有效的组合取决于所需的滤波器响应以及设计的频率和幅值约束。

过滤顺序

全部崩溃

过滤器订单,指定为逗号分隔对组成“过滤器订单”和一个正整数标量。

数据类型:

IIR设计的分子顺序,指定为逗号分隔对,由“数字记录器”和一个正整数标量。

数据类型:

IIR设计的分母顺序,指定为逗号分隔对,由“分母订单”和一个正整数标量。

数据类型:

频率约束

全部崩溃

通带频率,指定为逗号分隔对,由“通带频率”和正标量。频率值必须在奈奎斯特范围内。

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

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

数据类型:

阻带频率,指定为逗号分隔对,包括“阻带频率”和正标量。频率值必须在奈奎斯特范围内。

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

“StopbandFrequency2”是带通或带器设计的较高的停车频率。

数据类型:

6-dB频率,指定为逗号分隔对,包括“截止频率”和正标量。频率值必须在奈奎斯特范围内。

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

“CutoffFrequency2”是带通或带阻设计中较高的6-dB频率。

数据类型:

3-dB频率,指定为逗号分隔对,包括“HalfPowerFrequency”和正标量。频率值必须在奈奎斯特范围内。

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

“HalfPowerFrequency2”是带通或带器设计的3dB频率越高。

数据类型:

希尔伯特变换器通带和阻带之间过渡区的宽度,指定为逗号分隔对,由“过渡宽度”和一个正标量。

数据类型:

响应频率,指定为逗号分隔对,包括“频率”和一个向量。使用此变量列出任意幅值响应的滤波器具有所需幅值的频率。频率必须单调增加,并且在奈奎斯特范围内。向量的第一个元素必须是0或Fs/2,在那里Fs是采样率,其最后一个元素必须为Fs/2。如果未指定采样率,设计过滤器使用默认值2 Hz。

数据类型:

多频带设计中的频带数目,指定为逗号分隔对,由'numbands'以及不大于10的正整数标量。

数据类型:

多频带响应频率,指定为逗号分隔对,包括“频带频率”和一个数字矢量。“频带频率”,在那里从1运行到numbands.,是一个向量,包含多频带设计的带有所需的值,“BandAmplitudesi”numbands.最多可以10.频率必须位于奈奎斯特范围内,并且必须以单调增加的顺序指定。相邻的频带必须在其交界处具有相同的幅度。

数据类型:

幅度约束

全部崩溃

通带纹波,指定为逗号分隔对,由'passbandropple'和以分贝表示的正标量。

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

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

数据类型:

阻带衰减,指定为逗号分隔对,包括“止损绷带”和以分贝表示的正标量。

“StopBandattentiation1”是带通设计的较低频带阻带衰减。

'stopbandattenuation2'是带通设计的更高频带停滞衰减。

数据类型:

任意幅度响应滤波器的期望响应幅度,指定为逗号分隔的对组成“振幅”和向量。用线性单位表示振幅。向量的长度必须与“频率”

数据类型:

多频带响应幅值,指定为逗号分隔对,由“BandAmplitudesi”和一个数字矢量。“BandAmplitudesi”,在那里从1运行到numbands.,是一个向量,其中包含多频带设计中的频带。numbands.最多可以是10。用线性单位表示振幅。“BandAmplitudesi”必须具有与“频带频率”.相邻频带的连接处必须具有相同的振幅。

数据类型:

设计方法

全部崩溃

设计方法,指定为逗号分隔对,由“设计方法”以及字符向量或字符串标量。设计方法的选择取决于您指定的频率和幅度约束的集合。

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

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

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

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

  • “埃利普”设计了一种椭圆IIR滤波器。椭圆滤波器的通带和阻带频率响应均为等波纹。

  • '平静'使用Parks-McClellan算法设计等波纹FIR滤波器。等波纹滤波器的频率响应使所有频带上的最大波纹幅度最小化。

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

  • “kaiserwin”采用Kaiser窗方法设计FIR滤波器。该方法截断理想滤波器的脉冲响应,并使用Kaiser窗衰减由此产生的截断振荡。

  • '是'使用最小二乘法设计FIR滤波器。该方法使指定的任意分段线性函数与滤波器的幅度响应之间的差异最小化。

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

  • “窗口”使用最小二乘近似计算滤波器系数,然后使用''

数据类型:字符|字符串

设计方法选项

全部崩溃

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

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

例子:“窗口”,损害(N + 1)‘窗口’,(1-cos(2*pi*(0:N)’/N))/2两者都指定要与顺序过滤器一起使用的Hann窗口N

例子:“窗口”,“哈明”指定所需订单的汉明窗口。

例子:'窗口',@mywindow用于定义自己的窗口函数。

例子:'窗口',{@kaiser,0.5}使用形状参数0.5指定所需顺序的Kaiser窗口。

数据类型:|字符|字符串|功能手柄|单间牢房

要精确匹配的带,指定为逗号分隔的对,由“MatchExactly”,要么“阻带”,'通带''两个都''两个都'仅适用于椭圆设计方法,其中它是默认值。“阻带”是的默认值“黄油”“cheby2”方法。'通带'是默认值“cheby1”

数据类型:字符|字符串

通信偏移量,指定为逗号分隔的对组成“通带偏移量”和以分贝表示的正标量。“通带偏移量”指定通带中的滤波器增益。

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

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

数据类型:

比例通带,指定为逗号分隔对“ScalePassband”和一个逻辑标量。当你设置时“ScalePassband”符合事实的,通带在加窗后进行缩放,以便滤波器在零频率下具有单位增益。

例子:'Window',{@kaiser,0.1},'ScalePassband',true帮助指定零频率响应的滤波器正好为0 dB。指定时不是这种情况“ScalePassband”,错误.要验证,请验证过滤器fvtool然后放大。

数据类型:必然的

零相位,指定为逗号分隔对,由“零相位”和一个逻辑标量。当你设置时“零相位”符合事实的,所得滤波器的零阶段响应始终为正。这使您可以对结果进行频谱分解,并从中获取最小相位滤波器。

数据类型:必然的

通带优化权重,指定为逗号分隔对,由“通带重量”和一个正标量。

“PassbandWeight1”是BandStop FIR设计的较低带通带优化重量。

“PassbandWeight2”是带阻FIR设计的更高频带通带优化权重。

数据类型:

阻带优化权重,指定为逗号分隔对,包括“阻带重量”和一个正标量。

“StopbandWeight1”是带通FIR设计的较低频带阻带优化权重。

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

数据类型:

优化权重,指定为逗号分隔对组成'重量'和一个正标量或与相同的矢量“振幅”

数据类型:

多频量重量,指定为逗号分隔对组成'Bandweightsi'和一组正标量或向量。'Bandweightsi',在那里从1运行到numbands.,是一个标量或向量,包含多频带设计中的频带。如果指定为向量,'Bandweightsi'必须具有与“BandAmplitudesi”

数据类型:

采样率

全部崩溃

采样率,指定为逗号分隔对,由“SampleRate”和以赫兹表示的正标量。若要使用标准化频率,请设置“SampleRate”到2,或简单地省略它。

数据类型:

输出参数

全部崩溃

数字滤波器,返回为DigitalFilter.对象

更多关于

全部崩溃

过滤器设计助理

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

(在参数描述中resp有一个完整的所有可用响应类型的有效规范集列表。)

如果你打电话给助理,他会表现得不一样设计过滤器在命令行或脚本或函数中。

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

您将获得一个以2 kHz采样的信号。要求您设计一个低通FIR滤波器,以抑制高于650 Hz的频率分量。“截止频率”听起来像是规范参数的一个很好的候选者。在MATLAB命令行中,键入以下命令。

Fsamp=2e3;Fctff=650;dee=设计过滤器(“lowpassfir”,“截止频率”,fctff,...“SampleRate”,FSAMP);

因为这个对话框出现在你的屏幕上,所以看起来有些不对劲。

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

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

dee = designfilt(“lowpassfir”,“过滤器订单”, 10,...“截止频率”,fctff,“SampleRate”,Fsamp);

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

dee = digitalFilter with properties: Coefficients: [1x11 double] Specifications: FrequencyResponse: 'lowpass' ImpulseResponse: 'fir' SampleRate: 2000 FilterOrder: 10 CutoffFrequency: 650 DesignMethod: 'window' Use fvtool to visualize filter Use filter function to filter data . dee = digitalFilter with properties: Coefficients: [1x11 double] Specifications: FrequencyResponse: 'lowpass' ImpulseResponse: 'fir' SampleRate: 2000 FilterOrder: 10 CutoffFrequency: 650 DesignMethod: 'window' Use fvtool to visualize filter Use filter function to filter data . dee = digitalFilter with properties: Coefficients: [1x11 double

你调用FVTool然后得到一个的频率响应。

fvtool(dee)

这个界限看起来不是特别明显。大多数频率的响应都在40db以上。你还记得助手有一个设置“幅度限制”的选项,称为“阻带衰减”。通过打电话来打开助手设计过滤器以筛选器名称作为输入。

Designfilt(Dee)

单击震级限制下拉菜单,并选择通带纹波和阻带衰减.你可以看到设计方法已经改变了冷杉约束最小二乘.衰减的默认值为60 dB,高于40.单击好啊并可视化生成的过滤器。

dee = designfilt(“lowpassfir”,“过滤器订单”, 10,...“截止频率”,fctff,...'passbandropple'1.“止损绷带”60,...“SampleRate”,Fsamp);fvtool(dee)

截止值看起来仍然不明显。衰减确实是60分贝,但对于900赫兹以上的频率。

再次调用设计过滤器以您的过滤器作为输入。

Designfilt(Dee)

助手又出现了。

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

dee = designfilt(“lowpassfir”,“过滤器订单”, 50,...“截止频率”, 650,...'passbandropple'1.“止损绷带”60,...“SampleRate”, 2000);fvtool(dee)

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

dee = designfilt(“lowpassfir”,“通带频率”, 600,...“阻带频率”, 700,...'passbandropple'1.“止损绷带”60,...“SampleRate”, 2000);fvtool(dee)

脚本或功能中的过滤器设计助手

您将获得一个以2 kHz采样的信号。要求您设计一个高通滤波器,使频率停止在700 Hz以下。你不关心信号的相位,你需要使用低阶滤波器。因此,IIR过滤器似乎足够了。您不确定什么样的过滤器顺序是最好的,所以您编写了一个函数,接受该顺序作为输入。打开MATLAB编辑器并创建文件。

作用dataOut=hipassfilt(N,dataIn)hpFilter=designfilt(“highpassiir”,“过滤器订单”N);dataOut =过滤器(hpFilter dataIn);终止

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

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

当您在命令行运行脚本时,您将得到一条错误消息。

错误消息为您提供了打开助手以更正MATLAB代码的选项。点击点击这里在屏幕上显示过滤器设计助手。

您看到问题了:您没有指定频率约束。你还忘了设定抽样率。经过试验,您发现您可以指定频率单位作为赫兹,通带频率等于700 Hz,和输入Fs等于2000赫兹设计方法改变从巴特沃斯切比雪夫Ⅰ型.你点击好啊并获得以下信息。

助手已正确识别您呼叫的文件设计过滤器点击是的接受改变。该函数具有校正的MATLAB代码。

作用dataIn dataOut = hipassfilt (N)%hpFilter=designfilt('highpassiir','FilterOrder',N);hpfilter = designfilt(“highpassiir”,“过滤器订单”N...“通带频率”, 700,'passbandropple'1....“SampleRate”, 2000);dataOut =过滤器(hpFilter dataIn);终止

您现在可以使用不同的筛选顺序值运行脚本。根据您的设计约束,您可以更改规范集。

过滤器设计助手首选项

你可以设置设计过滤器永远不要提供过滤器设计助手。此操作设置了一个可以用setpref:

  • 使用SetPref('dontshowmeagain','filterdesignaciabastant',false)每次都要提供助理。使用此命令,您可以在已禁用后再次获取助手。

  • 使用setpref('dontshowmeagain','filterDesignAssistant',true)要永久禁用助手,请执行以下操作。您也可以单击不再显示此消息在初始对话框中。

你可以设置设计过滤器总是不经询问就纠正错误的规格。此操作设置一个MATLAB首选项,可以使用setpref:

  • 使用setpref('dontshowmeagain','filterdesignaciasaStantCodeCorrection',false)拥有设计过滤器纠正您的MATLAB代码而无需确认。你也可以点击永远接受在确认对话框中。

  • 使用setpref('dontshowmeagain','filterdesignassistantdecorrection',true)以确保设计过滤器仅当您确认需要更改时才更正MATLAB代码。使用此命令,您可以撤消单击的效果永远接受在确认对话框中。

故障排除

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

  • 如果您使用代码部分评估,请从MATLAB ToolStrip或按下使用助手Ctrl + Enter..(见将文件分成代码段有关更多信息。)

  • 如果您的代码有多个对的调用,则不会向您提供助手设计过滤器,其中至少有一个呼叫不正确,并且

    • 将代码粘贴到命令行并按下键执行它输入

    • 在编辑器中选择代码,然后按执行F9

  • 如果你跑步,就不会有助手设计过滤器使用匿名函数。(请参阅匿名函数例如,此输入提供了一个助手。

    d=设计过滤器(“lowpassfir”,“截止频率”,0.6)
    这个输入没有。
    myfilterdesigner = @designfilt;d = myfilterdesigner(“lowpassfir”,“截止频率”,0.6)

  • 如果你跑步,就不会有助手设计过滤器使用评估。例如,此输入提供了一个助手。

    d=设计过滤器(“lowpassfir”,“截止频率”,0.6)
    这个输入没有。
    myFilterDesigner =...sprintf ('设计过滤器(''%s'',''截止频率',%f)',...“lowpassfir”,0.6); d=评估(myFilterDesigner)

过滤器设计助手需要Java®软件和MATLAB桌面运行。如果使用万博1manbetx-nojvm.,-节点显示-Nodesktop.选项。

R2014a中引入