概述
启动 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);
添加和删除滤波器
我们可以观察到两个滤波器都符合设计规范,但仍需要查看 Chebyshev II 类设计的性能如何。
您可以使用 ADDFILTER 函数向 FVTool 添加滤波器。
Df3 = designfilt('lowpassiir','PassbandFrequency',0.4,...
'StopbandFrequency',0.6,...
'PassbandRipple',1,...
'StopbandAttenuation',80,...
'DesignMethod','cheby2');
addfilter(hfvt, Df3);
要识别绘图上的哪条线属于哪个滤波器,可以使用 FVTool 句柄的 LEGEND 函数添加图例。
legend(hfvt, 'Equiripple', 'Elliptic', 'Chebyshev Type II');
您可以使用 DELETEFILTER 函数并传递要删除的滤波器的索引,从 FVTool 中删除滤波器。
deletefilter(hfvt, [1 3]);
更改分析参数
FVTool 返回的句柄包含允许您与滤波器和当前分析进行交互的属性。
要查看所有可用的属性,可以使用 GET 命令。前几个属性是常规 MATLAB® 图窗的属性。最后 14 个属性是特定于 FVTool 的属性。其中最后六个(从 FrequencyScale 到 MagnitudeDisplay)是特定于分析的属性。
s = get(hfvt);
% 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'
NumberofPoints: 8192
NormalizeMagnitudeto1: 'off'
NormalizedFrequency: 'on'
FrequencyVector: [1x256 double]
PolyphaseView: 'off'
Analysis: 'magnitude'
OverlayedAnalysis: ''
ShowReference: 'on'
FrequencyRange: '[0, pi)'
所有可从 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';
获取 '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';
GET 命令将返回新的分析参数以进行新的分析。
GroupDelayUnits = hfvt.GroupDelayUnits;
叠加两个分析
我们还想查看群延迟和幅值响应在频域中是如何重叠的。
通过设置 'OverlayedAnalysis' 属性,可以在 FVTool 中重叠共用一个 x 轴(时间或频率)的任意两个分析。
set(hfvt, 'OverlayedAnalysis', 'magnitude', 'Legend', 'On')
要关闭重叠的分析,只需将 'OverlayedAnalysis' 属性设置为 ''。
hfvt.OverlayedAnalysis = '';
将 FVTool 视为图窗窗口进行交互
您也可以像对待普通图窗窗口一样对 FVTool 窗口进行注释。
FVTool 图窗的行为与普通图窗窗口一样。这允许您使用 MATLAB 的 grid 和 axis 函数。
grid on
axis([.3 .45 5 25]);
也可以从命令行访问轴。您可以更改标题和标签。
title('Group Delay of an Elliptic filter');
xlabel('Frequency (normalized to 1)');
ylabel('Group Delay in samples');
htext = text(.35, 23, 'Maximum Group Delay');
FVTool 不会自动从您的分析中删除附加注释,您可以通过删除句柄本身来实现这一点。您可以通过对 FVTool 句柄调用 close 函数来关闭 FVTool 图窗。
delete(htext);
close(hfvt)
最后
以上就是坦率花生为你收集整理的matlab fvtool参数,使用 FVTool 进行滤波器分析的全部内容,希望文章能够帮你解决matlab fvtool参数,使用 FVTool 进行滤波器分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复