Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

使用 FVTool 进行滤波器分析

此示例说明如何通过滤波器可视化工具 (FVTool) 在单个图窗窗口中使用多个滤波器分析函数,Fvtool 是 Signal Processing Toolbox™ 中提供的一个图形用户界面。

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

启动 FVTool

我们希望创建一个低通滤波器,其通带频率为 0.4π 弧度/采样点、阻带频率为 0.6π 弧度/采样点、通带波纹为 1 dB、阻带衰减为 80 dB。我们将使用 Signal Processing Toolbox 的一些滤波器设计工具来设计滤波器,然后在 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);

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

添加和删除滤波器

我们可以观察到两个滤波器都符合设计规范,但仍需要查看 Chebyshev II 类设计的性能如何。

您可以使用 ADDFILTER 函数向 FVTool 添加滤波器。

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

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line.

要识别绘图上的哪条线属于哪个滤波器,可以使用 FVTool 句柄的 LEGEND 函数添加图例。

legend(hfvt, 'Equiripple', 'Elliptic', 'Chebyshev Type II');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line. These objects represent Equiripple, Elliptic, Chebyshev Type II.

您可以使用 DELETEFILTER 函数并传递要删除的滤波器的索引,从 FVTool 中删除滤波器。

deletefilter(hfvt, [1 3]);

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line. This object represents Elliptic.

更改分析参数

FVTool 返回的句柄包含允许您与滤波器和当前分析进行交互的属性。

要查看所有可用的属性,可以使用 GET 命令。前几个属性是常规 MATLAB® 图窗的属性。最后 14 个属性是特定于 FVTool 的属性。其中最后六个(从 FrequencyScale 到 MagnitudeDisplay)是特定于分析的属性。

s = get(hfvt);

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line. This object represents Elliptic.

% Keep the last 14 properties
c = struct2cell(s);
f = fieldnames(s);
s = cell2struct(c(end-14:end),f(end-14:end),1)
s = struct with fields:
       SelectionHighlight: on
                      Tag: 'filtervisualizationtool'
                 UserData: []
                  Visible: on
         MagnitudeDisplay: 'Magnitude (dB)'
           FrequencyScale: 'Linear'
            PolyphaseView: 'off'
                 Analysis: 'magnitude'
        OverlayedAnalysis: ''
          FrequencyVector: [1x256 double]
            ShowReference: 'on'
           FrequencyRange: '[0, pi)'
      NormalizedFrequency: 'on'
           NumberofPoints: 8192
    NormalizeMagnitudeto1: 'off'

所有可从 FVTool 的“分析参数”对话框获得的参数也可用作 FVTool 对象的属性。只带两个输入参数的 SET 命令返回所有可能的值。

set(hfvt, 'MagnitudeDisplay')
ans = 1x4 cell
  Columns 1 through 3

    {'Magnitude'}    {'Magnitude (dB)'}    {'Magnitude squared'}

  Column 4

    {'Zero-phase'}

将显示转至 'Magnitude Squared'

hfvt.MagnitudeDisplay = 'Magnitude Squared';

Figure Filter Visualization Tool - Magnitude Response (squared) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (squared) contains an object of type line. This object represents Elliptic.

获取 'Analysis' 属性的所有可能值

set(hfvt, 'Analysis')
ans = 1x12 cell
  Columns 1 through 5

    {'magnitude'}    {'phase'}    {'freq'}    {'grpdelay'}    {'phasedelay'}

  Columns 6 through 10

    {'impulse'}    {'step'}    {'polezero'}    {'coefficients'}    {'info'}

  Columns 11 through 12

    {'magestimate'}    {'noisepower'}

现在让我们更改分析,看看滤波器的群延迟响应。

hfvt.Analysis = 'grpdelay';

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line. This object represents Elliptic.

GET 命令将返回新的分析参数以进行新的分析。

GroupDelayUnits = hfvt.GroupDelayUnits;

叠加两个分析

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

通过设置 'OverlayedAnalysis' 属性,可以在 FVTool 中重叠共用一个 x 轴(时间或频率)的任意两个分析。

set(hfvt, 'OverlayedAnalysis', 'magnitude', 'Legend', 'On')

Figure Filter Visualization Tool - Group delay and Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay and Magnitude Response (dB) contains an object of type line. This object represents Elliptic: Group delay.

要关闭重叠的分析,只需将 'OverlayedAnalysis' 属性设置为 ''。

hfvt.OverlayedAnalysis = '';

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line. This object represents Elliptic.

将 FVTool 视为图窗窗口进行交互

您也可以像对待普通图窗窗口一样对 FVTool 窗口进行注释。

FVTool 图窗的行为与普通图窗窗口一样。这允许您使用 MATLAB 的 grid 和 axis 函数。

grid on
axis([.3 .45 5 25]);

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line. This object represents Elliptic.

也可以从命令行访问轴。您可以更改标题和标签。

title('Group Delay of an Elliptic filter');
xlabel('Frequency (normalized to 1)');
ylabel('Group Delay in samples');

htext = text(.35, 23, 'Maximum Group Delay');

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group Delay of an Elliptic filter contains 2 objects of type line, text. This object represents Elliptic.

FVTool 不会自动从您的分析中删除附加注释,您可以通过删除句柄本身来实现这一点。您可以通过对 FVTool 句柄调用 close 函数来关闭 FVTool 图窗。

delete(htext);
close(hfvt)

另请参阅

|