首页 > 行业资讯 > 正文

1.1 滤波器设计流程

本文展示了如何使用Matlab中滤波器设计规格对象函数复制fdesign的使用方法。根据复制fdesign创建的滤波器规格对象,可以使用复制design函数直接设计滤波器。

滤波器的设计、分析以及在数据流上的应用的示意图如下所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器

具体的步骤如下所示:

步骤一: 创建一个复制fdesign.response规格对象用以表述滤波器设计参数; 步骤二: 使用复制designmethods确定针对滤波器规格队形的滤波器设计方法; 步骤三: 如果想要进一步修改滤波器的参数,可以查看复制designoptions函数的使用方法,进行具体的滤波器参数设置。 步骤四: 使用复制design方法从滤波器规格对象设计一个滤波器,并以步骤二中的设计方法作为输入。如果需要修改设计选项值,需要指定复制名称-值对的方式向复制design函数中传递参数;另外,如果在调用复制design函数时,没有指定任何输出参数,则将默认启动滤波器可视化工具复制FVTool,并现实设计滤波器的幅值响应。 步骤五: 至此,我们就可以进一步查看设计的滤波器分析结果包括:频率响应、损失函数、滤波器响应特征测量值等。具体的可以参考Analysis Methods for Filter System Objects。 步骤六: 经过滤波器分析、设计后,我们就可以将滤波器对象应用于输入数据流。

1.2 滤波器设计规格对象函数fdesign的语法

复制fdesign函数的使用语法主要包括如下四种方式:

(1)复制designSpecs = fdesign.response:返回一个具有特定响应(复制response)的滤波器设计规格对象(design specification object)。 (2)复制designSpecs = fdesign.response(spec):指定用于定义滤波器设计的变量复制spec。 (3)复制designSpecs = fdesign.response(___, Fs):指定设计滤波器的采样频率()。注意:复制Fs参数必须作为最后一个参数。 (4)复制designSpecs = fdesign.response(___, magunits):指定输入参数的幅值单位。 二、低通滤波器设计与性能分析

示例: 设计一个采样频率为的低通滤波器,低通滤波器的参数规格如下所示:

通带频率为; 阻带频率为; 通带波动为; 阻带衰减为。

低通滤波器的阶数可以根据参数规格自动的配置。

2.1 低通滤波器的设计

首先,使用复制fdesign.lowpass函数设置低通滤波器规格对象,Matlab代码如下所示:

复制Fs = 96e3; % 采样频率 Fpass = 20e3; % 通带频率 Fstop = 24e3; % 阻带频率 Apass = 0.01; % 通带波纹 Astop = 80; % 阻带衰减 % 使用fdesign.lowpass函数得到滤波器规格对象filtSpecs filtSpecs = fdesign.lowpass( … Fpass, … % 通带频率 Fstop, … % 阻带频率 Apass, … % 通带波纹 Astop, … % 阻带衰减 Fs); % 采样频率

然后,使用复制designmethods函数可以输出针对滤波器规格对象复制filtSpecs可用的滤波器设计方法,Matlab代码如下所示:

复制% 查看可用的滤波器设计方法 designmethods(filtSpecs, SystemObject, true)

该代码的执行结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器1

下面,使用复制design函数设计两个满足规格的低通滤波器:

等波纹FIR低通滤波器(equiripple); 椭圆IIR低通滤波器。

!! ✨ 注意: 复制design函数的返回值是一个复制dsp.FIRdecimator系统对象,Matlab代码如下所示:

等波纹FIR低通滤波器滤波器的实现代码如下所示:

复制lpFIR = design(filtSpecs, equiripple, SystemObject, true)

代码输出如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器2

椭圆IIR低通滤波器的实现代码如下所示:

复制lpIIR = design(filtSpecs, ellip, SystemObject, true)

代码输出结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器3

2.2 低通滤波器的分析

最后,我们可以使用如下函数对设计的滤波器进行分析与可视化:

复制measure函数:测量滤波器系统对象的频率响应特性,对于低通滤波器,该函数测量的滤波器指标如下表所示: 频率响应特性 描述 复制Sample Rate 滤波器采样频率 复制Passband Edge 通带进入过渡时的边缘位置 复制3-dB Point 响应曲线上-3dB点的位置 复制6-dB Point 响应曲线上-6dB点的位置 复制Stopband Edge 过渡带进入阻带时的边缘位置 复制Passband Ripple 通带波纹 复制Stopband Atten 阻带衰减 复制Transition Width 通带与阻带之间的过渡宽度 复制cost函数:评估滤波器系统对象的实现计算成本,并返回一个包含计算成本评估值的结构体,返回值包含的内容如下表所示: 计算成本评估值 描述 复制NumCoefficients 滤波器系数的数量,不包含 复制NumStates 滤波器状态的数量 复制MultiplicationsPerInputSample 每个输入样本执行乘法运算的数量 复制AdditionsPerInputSample 每个输入样本执行加法运算的数量 复制fvtool:对滤波器进行可视化并直观地比较不同滤波器的性能。

(1)滤波器频率响应特性测量

等波纹FIR低通滤波器滤波器的频率响应特性测量代码如下所示:

复制FIRmeas = measure(lpFIR)

等波纹FIR低通滤波器滤波器的频率响应特性测量结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器4

椭圆IIR低通滤波器的频率响应特性测量代码如下所示:

复制IIRmeas = measure(lpIIR)

椭圆IIR低通滤波器的频率响应特性测量结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器5

(2)滤波器计算成本评估

等波纹FIR低通滤波器滤波器的计算成本评估代码如下所示:

复制FIRcost = cost(lpFIR)

等波纹FIR低通滤波器滤波器的计算成本评估结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器6

椭圆IIR低通滤波器的计算成本评估代码如下所示:

复制IIRcost = cost(lpIIR)

椭圆IIR低通滤波器的计算成本评估结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器7

(3)滤波器频率响应可视化

下面使用复制fvtool对等波纹FIR低通滤波器滤波器与椭圆IIR低通滤波器进行可视化处理,代码如下所示:

复制hvft = fvtool(lpFIR, lpIIR, Fs, Fs); legend(hvft, 等波纹FIR低通滤波器, 椭圆IIR低通滤波器)

两个滤波器的可视化结果如下图所示:

简述滤波器设计规格对象函数fdesign的使用方法 1-filter solution设计滤波器8

猜你喜欢