这个例子展示了如何使用filter Visualization Tool (FVTool)在单个图形窗口中使用几个filter分析函数,FVTool是Signal Processing Toolbox™中的一个图形用户界面。
FVTool也有一个应用程序接口(API),允许你从命令行与GUI交互。这使您能够将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图形。
drawtext (Df1, Df2);
我们可以观察到两个过滤器都符合设计规范,但我们也想看看切比雪夫II型设计的表现如何。
你可以使用ADDFILTER函数给FVTool添加一个过滤器。
Df3 = designfilt (“lowpassiir”,“PassbandFrequency”, 0.4,…“StopbandFrequency”, 0.6,…“PassbandRipple”,1,…“StopbandAttenuation”, 80,…“DesignMethod”,“cheby2”);addfilter (hfvt Df3);
要确定图上的哪条线属于哪个过滤器,可以使用FVTool句柄的legend函数添加图例。
传奇(hfvt“Equiripple”,“椭圆”,“切比雪夫II型”);
您可以使用DELETEFILTER函数从FVTool中删除过滤器,并传递您想要删除的过滤器的索引。
deletefilter (hfvt [1 3]);
FVTool返回的句柄包含允许您与筛选器和当前分析进行交互的属性。
要查看所有可用属性,可以使用GET命令。第一个属性是规则的MATLAB®图形。最后14个属性是FVTool特定的。最后六个(从FrequencyScale到magnitdisplay)是特定于分析的。
s = (hfvt);
%保留最后14个属性c = struct2cell(年代);f =字段名(年代);s = cell2struct (c (end-14:结束),f (end-14:结束),1)
s =结构体字段:SelectionHighlight:标签:“filtervisualizationtool”用户数据:[]可见:MagnitudeDisplay:“(dB)级”NumberofPoints: 8192 NormalizeMagnitudeto1:‘off’NormalizedFrequency:”“FrequencyScale:“线性”分析:“大小”FrequencyRange:“[0,π)”FrequencyVector:[0 0.0039 0.0078 0.0118 0.0157 0.0196 0.0235……多相视图:“关闭”叠加分析:“ShowReference:“打开”
所有在FVTool的分析参数对话框中可用的参数也可以作为FVTool对象的属性。只有两个输入参数的SET命令返回所有可能的值。
集(hfvt,“MagnitudeDisplay”)
ans =1 x4单元格第1至3列{'幅值'}{'幅值(dB)'}{'幅值平方'}第4列{'零相位'}
将显示器显示为“星等平方”
hfvt。MagnitudeDisplay =“平方级”;
获取“Analysis”属性的所有可能值
集(hfvt,“分析”)
ans =1 x12单元格第6列到第10列{'impulse'} {'step'} {'polezero'} {'coefficients'} {'info'} 11列到第12列{'magestimate'} {'noisepower'}
现在让我们改变分析,看看滤波器的组延迟响应。
hfvt。分析=“grpdelay”;
GET命令将为新的分析返回新的分析参数。
GroupDelayUnits = hfvt.GroupDelayUnits;
我们还想看看群延迟和幅度响应在频域是如何重叠的。
通过设置“OverlayedAnalysis”属性,你可以在FVTool中覆盖任何两个共享x轴(时间或频率)的分析。
集(hfvt,“OverlayedAnalysis”,“级”,“传奇”,“上”)
要关闭叠加分析,只需将“OverlayedAnalysis”属性设置为“”。
hfvt。OverlayedAnalysis =”;
FVTool窗口也可以像普通图形窗口一样进行注释。
FVTool图形表现为一个普通的图形窗口。这允许您使用MATLAB的网格和轴函数。
网格在轴([。3.45 5 25]);
轴也可以从命令行访问。这允许您更改标题和标签。
标题(椭圆滤波器的群延迟);包含('频率(归一化为1)');ylabel (“样本中的群延迟”);文本(htext =。35岁,23岁,最大的群延迟的);
FVTool不会自动从你的分析中删除额外的注释,你可以通过删除句柄本身来实现。你可以通过调用FVTool句柄上的close函数来关闭FVTool图形。
删除(htext);关上(hfvt)