使用 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);
如图所示:
添加和删除滤波器
我们可以观察到两个滤波器都符合设计规范,但仍需要查看 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: onTag: 'filtervisualizationtool'UserData: []Visible: onNumberofPoints: 8192FrequencyVector: [0 0.0039 0.0078 0.0118 0.0157 0.0196 0.0235 ... ]NormalizeMagnitudeto1: 'off'NormalizedFrequency: 'on'MagnitudeDisplay: 'Magnitude (dB)'PolyphaseView: 'off'FrequencyScale: 'Linear'Analysis: 'magnitude'OverlayedAnalysis: ''FrequencyRange: '[0, pi)'ShowReference: 'on'
所有可从 FVTool 的“分析参数”对话框获得的参数也可用作 FVTool 对象的属性。只带两个输入参数的 SET 命令返回所有可能的值。
set(hfvt, 'MagnitudeDisplay')ans = 1x4 cellColumns 1 through 3{'Magnitude'} {'Magnitude (dB)'} {'Magnitude squared'}Column 4{'Zero-phase'}
将显示转至 'Magnitude Squared'
hfvt.MagnitudeDisplay = 'Magnitude Squared';
如图所示:
获取 'Analysis' 属性的所有可能值
set(hfvt, 'Analysis')ans = 1x12 cellColumns 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)
使用 FVTool 进行滤波器分析相关推荐
- matlab fvtool参数,使用 FVTool 进行滤波器分析
启动 FVTool 我们希望创建一个低通滤波器,其通带频率为 0.4π 弧度/采样点.阻带频率为 0.6π 弧度/采样点.通带波纹为 1 dB.阻带衰减为 80 dB.我们将使用 Signal Pro ...
- matlab幅度归一化,Matlab fvtool滤波器频响的幅度显示归一化
fircoe = [0.018641, 0.018275,-0.020377,-0.071243,-0.049673,... 0.094562, 0.28841, 0.37949, 0.28841, ...
- Matlab滤波器的verilog实现,FIR滤波器的Verilog实现
设计总结 FIR简介 用Verilog实现FIR需要注意的问题? 2.1 浮点数和定点数之间的转换 2.2 利用FilterDesigner设计FIR 2.3 Matlab仿真分析 2.4 补码问题 ...
- 高斯滤波器是低通还是高通_经典模拟滤波器仍值得研究吗?
对于大多数的电路和系统来说,使用电感器.电容器和电阻器的模拟滤波器至关重要.无论是被动还是主动设计,透过具有高难度数学的理论结构.实际的「应用说明」(application note)设计与物料清单( ...
- 全球及中国手机SAW滤波器行业供需现状及盈利前景预测报告(新版)2022-2027
全球及中国手机SAW滤波器行业供需现状及盈利前景预测报告(新版)2022-2027 ================================================ [报告编号]: B ...
- 【信号分析之心电信号处理】
信号分析之心电信号处理 任选下面的一组数据,利用自适应滤波中LMS和RLS方法进行处理,分析不同阶数.步长及指数加权因子对滤波结果的影响.同时给出迭代次数与滤波器系数,迭代次数与均方误差之间的关系曲线 ...
- fvtool幅度归一化
我们在用matlab设计滤波器后,可以用fvtool来看滤波器的频响,比如我们有了滤波器的系数后,直接用fvtool. fircoe = [0.018641, 0.018275,-0.020377 ...
- 2021-2027全球与中国EMI/EMC滤波器市场现状及未来发展趋势
本报告研究全球与中国市场EMI/EMC滤波器的产能.产量.销量.销售额.价格及未来趋势.重点分析全球与中国市场的主要厂商产品特点.产品规格.价格.销量.销售收入及全球和中国市场主要生产商的市场份额.历 ...
- EMI滤波器的matlab仿真,开关电源EMI滤波器的仿真设计
目前,在我国绝大多数工程设计中,尤其是在设计初期,很少考虑设备内部电路对内以及对外的电磁干扰问题,致使许多电力电子装置性能都不能得到理想效果.往往是问题出现了才去寻找原因与解决方法,这既耗时又耗力,而 ...
最新文章
- Docker火遍全球!Docker(Inc)这家公司却要死了???
- insert 语句常见问题
- Paypal IPN
- 简单Linux C线程池
- 小学期学习记录(一)
- 自学成才翁_仅因为您是自学成才,并不意味着您必须独自学习。
- pandas 判断是否等于nan_Python之pandas笔记
- lpc2000 filash utility 程序烧写工具_重点必看 | 取证小程序开发之第四届美亚杯硬盘信息快速解题...
- delphi 实现最小化系统托盘
- NokiaE6 java_全键盘塞班Anna手机 诺基亚E6详细评测
- 3D建模和渲染的硬件配置怎么选?这里有答案
- 2021年声纹识别研究与应用学术研讨会笔记
- ubuntu下 分辨率设置
- C语言图片变黑白,用c语言把bmp格式的彩色图片转换成黑白的
- 洛谷P1359租用游艇
- 【Ruby on Rails全栈课程】4.3 评论功能实现(二)--创建帖子详情页面
- CnOpenData中国小区及二手房交易数据简介
- Fanuc机器人配置伺服焊枪完整步骤
- mysql 事务隔离界别_MySQL数据库事务隔离级别(Transaction Isolation Level)
- 营销CRM软件(销售管理工具)让客户都成为回头客
热门文章
- 无需正版我的世界服务器IP,我的世界1.7.10永恒服务器
- 数字档案馆建设指南及档案业务系统归档接口规范
- [乱七八糟]沉默是金
- 利用机器学习拟合复杂函数,并利用遗传算法求最优解
- 【Flask框架】一. Flask框架初体验(配置环境 + 简单demo样例)
- 商业虚拟专用网络技术十一 MPLS转发
- HTC-VIVE如何实现瞬移和替换手柄模型
- VScode 侧栏的资源管理器字体太小,怎么设置?
- transient 关键字
- python累计积_累积分布函数(cumulative distribution function)