关于Matlab中用fdatool设计滤波器

Matlab中继承了可视化的滤波器设计插件fdatool,可以方便地在可视化界面中设计滤波器参数,然后导出参数,以备后续使用。

首先:

在命令窗口输入fdatoo命令打开滤波器设计界面:


在界面中输入目标滤波器的参数后点击下方的Design Filer按钮进行参数计算,设计完成后上方会出现滤波器的幅频响应(在菜单栏中的Analyse可以选择其他分析选项)

当我们需要保存该滤波器以备后续调用时,点击File-Export,出现导出选项窗口。其中的Expotr To可以选择Workspace、Coefficient File以及MAT-File(第四个是SPTool,奈何笔者水平有限,这里就不介绍了)

第一种导出方式是到Workspace,也就是在matlab主界面的工作区中:


当选择这个选项之后,下面还需要选择Export As,如果选择Coefficient,那么在工作区中将出现一个叫BBPPFF(名字自定义)的矩阵,命令行中可以调用的形式为:filter(BBPPFF, 1, dataRaw);(这是对于FIR滤波器来说的,如果是IIR滤波器的话,工作区中将出现SOS和G两个矩阵,然后调用形式为:[b a]=SOS2tf(SOS,G); filter(b, a, dataRaw);)

如果选择Export As中的Object,那么工作区中将出现一个叫BBPPFF的对象,调用形式为:filter(BBPPFF, dataRaw)


第二种导出方式是到Coefficient File(ASCII):


当然,Format随便选,只是数据存储方式,这里选择Decimal十进制。然后出现文件另存为的窗口,保存为后缀为.fcf的ASCII文件。

对于FIR滤波器,利用记事本打开是这样的:


需要将阴影部分手动删除,然后代码调用形式:BPF=load('BPF.fcf');dataFiltered=filter(BPF,1,dataRaw);

对于IIR滤波器,利用记事本打开是这样的:


当然也需要将冗余的文字手动删除,剩下两个矩阵,在代码中将两个矩阵分别读取到变量SOS和G中,再利用[b a]=SOS2tf(SOS,G); filter(b, a, dataRaw);)进行调用。

第三种导出方式是到MAT-File:


如果选择Coefficient,那么保存为后缀.mat的文件之后,对于FIR滤波器的代码调用形式为:BPF=load('BPF.mat'); dataFiltered=filter(BPF.Num,1,dataRaw);

对于IIR滤波器的代码调用形式为:BPF=load('IIR.mat'); [b a]=SOS2tf(BPF.SOS,BPF.G); dataFiltered=filter(b, a, breath_signal);

如果选择Object,那么保存为.mat文件之后,调用形式为:BPF=load('BPF.mat'); dataFiltered=filter(BPF.BBPPFF,dataRaw);


  • 27
    点赞
  • 226
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值