主要内容

使用FVTool进行过滤分析

这个例子展示了如何使用滤波器可视化工具(FVTool)在一个图形窗口中使用几个滤波器分析函数,这是信号处理工具箱™中的一个图形用户界面。

FVTool还有一个应用程序接口(API),允许您从命令行与GUI交互。这使您能够将FVTool集成到其他应用程序中。

发射FVTool

我们想创建一个低通滤波器,其通带频率为0.4π rad/sample,阻带频率为0.6π rad/sample,通带纹波为1 dB,阻带衰减为80 dB。我们使用信号处理工具箱中的一些滤波器设计工具来设计滤波器,然后在FVTool中分析结果。

设计一个低通等纹波FIR滤波器。

Df1 = designfilt(“lowpassfir”PassbandFrequency = 0.4,...StopbandFrequency = 0.6,...PassbandRipple = 1,...StopbandAttenuation = 80,...DesignMethod =“equiripple”);

设计了一个低通椭圆IIR滤波器。

Df2 = designfilt(“lowpassiir”PassbandFrequency = 0.4,...StopbandFrequency = 0.6,...PassbandRipple = 1,...StopbandAttenuation = 80,...DesignMethod =“ellip”);

使用过滤器对象启动FVTool,并返回FVTool的句柄,这使我们能够重用相同的FVTool图形。

hfvt = fvtool(Df1,Df2);

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

添加和删除过滤器

我们可以观察到两个滤波器都符合设计规范,但我们也想看看切比雪夫II型设计的性能如何。

您可以添加一个过滤器到FVTool使用addfilter函数。

Df3 = designfilt(“lowpassiir”PassbandFrequency = 0.4,...StopbandFrequency = 0.6,...PassbandRipple = 1,...StopbandAttenuation = 80,...DesignMethod =“cheby2”);addfilter (hfvt Df3);

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

属性添加图例,以确定绘图上的哪一行属于哪个筛选器传说FVTool手柄的功能。

传奇(hfvt“Equiripple”“椭圆”“切比雪夫II型”);

图1:幅度响应(dB)包含一个轴对象。axis对象的标题为Magnitude Response (dB), xlabel归一化频率(乘以pi blank r a d / s a m p le), ylabel Magnitude (dB)包含3个类型为line的对象。这些物体代表了等纹,椭圆,切比雪夫型II。

可以从FVTool中删除过滤器deletefilter函数,并传递要删除的筛选器的索引。

deletefilter (hfvt [1 3]);

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

变更分析参数

FVTool返回的句柄包含允许您与过滤器和当前分析交互的属性。属性可以查看所有可用属性得到命令。显示最后14个特定于FVTool的属性。

S = get(hfvt);

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

保留最后14个属性C = struct2cell(s);F =字段名(s);S = cell2struct(c(end-14:end),f(end-14:end),1)
s =带字段的结构:SelectionHighlight: on Tag: 'filtervisualizationtool' UserData:[]可见:on Analysis: 'magnitude' FrequencyRange: '[0, pi)' NormalizedFrequency: 'on' PolyphaseView: 'off' ShowReference: 'on' OverlayedAnalysis: " FrequencyScale: 'Linear' FrequencyVector:[0 0.0039 0.0078 0.0118 0.0157 0.0196 0.0235 0.0275 0.0314 0.0353 0.0392 0.0431 0.0471 0.0510 0.0549 0.0588 0.0627 0.0667 0.0706 0.0745 0.0784 0.0824 0.0863 0.0902 0.0941 0.0980 0.1020 0.1059 0.1098 0.1137 0.1176 0.1216…NumberofPoints: 8192 NormalizeMagnitudeto1: 'off' MagnitudeDisplay: 'Magnitude (dB)'

所有从FVTool分析参数对话框中可用的参数也可以作为FVTool对象的属性。的只有两个输入参数的命令返回所有可能的值。

集(hfvt,“MagnitudeDisplay”
ans =1 x4单元格{'幅度'}{'幅度(dB)'}{'幅度平方'}{'零相位'}

将显示器转到大小的平方

hfvt。MagnitudeDisplay =“平方级”

图1:幅值响应(平方)包含一个轴对象。axis对象的标题为Magnitude Response (squared), xlabel归一化频率(乘以pi空白r a d / s a m p le), ylabel Magnitude squared包含一个类型为line的对象。这个对象表示Elliptic。

的所有可能值分析财产。

集(hfvt,“分析”
ans =1 x12单元格{‘级’}{‘相’}{“频率”}{‘grpdelay}{‘phasedelay}{‘冲动’}{“步骤”}{‘polezero}{“系数”}{‘信息’}{‘magestimate} {' noisepower '}

现在将分析改为查看滤波器的组延迟响应。显示默认单位。

hfvt。分析=“grpdelay”

图1:组延迟包含一个轴对象。标题为Group delay的axis对象,xlabel归一化频率(乘以pi blank r a d / sample), ylabel Group delay(在样本中)包含一个类型为line的对象。这个对象表示Elliptic。

GroupDelayUnits = hfvt.GroupDelayUnits
GroupDelayUnits =“样本”

叠加两种分析

我们还想看看群延迟和模响应在频域是如何重叠的。

您可以在FVTool中覆盖任何两个共享公共的分析x-轴(时间或频率)OverlayedAnalysis财产。

设置(hfvt OverlayedAnalysis =“级”传说=“上”

图1:组延迟和幅度响应(dB)包含一个轴对象。axis对象的标题为Group delay and Magnitude Response (dB), xlabel归一化频率(乘以pi blank r a d / sample), ylabel Group delay(在样本中)包含一个类型为line的对象。该对象表示Elliptic:组延迟。

若要关闭叠加分析,请设置OverlayedAnalysis财产

hfvt。OverlayedAnalysis =

图1:组延迟包含一个轴对象。标题为Group delay的axis对象,xlabel归一化频率(乘以pi blank r a d / sample), ylabel Group delay(在样本中)包含一个类型为line的对象。这个对象表示Elliptic。

方法关闭FVTool图形关闭函数在FVTool手柄。

关上(hfvt)

另请参阅

|