用Matlab的FDAtool生成IIR滤波器参数

MATLAB IIR数字滤波器设计

 

首先我们要明白相关的概念。

数字滤波器设计采用角频率,如何与实际信号频率对应?

角频率w,采样频率fs ,实际信号频率f的转换关系为:

       W = 2*pi* f / fs

采样频率的角频率为  2 *pi.

数字滤波器的指标,以低通为例【见下图】:

   

 

 

当我们设计的滤波器是带通的时候。其通带截止频率有两个,阻带截止频率也有两个。截止频率还有另外一个称谓,即边沿频率。

FIR 滤波器可以设计为线性相位,并且总是稳定的。在多数情况下,FIR滤波器的阶数 NFIR 显著大于具有等效幅度响应的IIR滤波器阶数NIIR。NFIR/NIIR 通常为10的量级或更高. IIR 滤波器通常计算更简便。 在很多应用中,并不要求滤波器具有严格的线性相位,在这些情况下,通常会因计算简便而选择IIR滤波器。例如在很多语音编码当中的滤波器很多都是IIR滤波器,均衡器一般也用IIR滤波器。也就是说对实时性要求不是很高的场合可以考虑使用FIR滤波器,当FIR滤波器阶数较长时,可以考虑用FFT去计算。

在设计IIR滤波器时,通常将数字滤波器的设计指标转化成模拟低通原型滤波器的设计指标,从而确定满足这些指标的模拟低通滤波器的传输函数Ha(s),然后再将它变换成所需要的数字滤波器传输函数G(z)。

上述滤波器设计的过程只需要了解其原理。借助于MATLAB强大的工具,滤波器的设计变得比较简单了。

在MATLAB命令窗口中键入fdatool, 你将启动滤波器设计的图形界面。你可以从simulink中直接选择数字滤波器控件而启动。

本文主要讲述IIR数字滤波器设计的方法。

对从麦克风进来的信号滤波。

假定我们要把50hz的电频干扰去掉,同时人说话的频率一般不会超过3400hz。我们设计一个带通滤波器,通带为【80-3200】,采样率为8k。

 

 

根据上面的需求,我们把相关的参数改成下面的界面:

 

 

单击 Design Filter,数秒之后显示如下:

 

可以看出:滤波器的阶数是36,还有一个 sections: 18. 由于在具体实现时一般是以2阶的级联或并联去实现的。所以实际上分为18个2阶节去实现。

36阶是系统计算出的满足需求的最小阶了。我们也可以自己事先制定阶数,参数如下:

 

这时,截止频率衰减参数已经没法选了,被固定为3分贝:

 

最终计算的幅度响应如下:

我们需要把设计的滤波器系数保存下来,以供其它程序调用。

MATLAB提供了直接导出系数的方法。

 

【targets】->【generate C header】

 

可以修改如下,选择【Generate】

 

 

 

在MATLAB工作目录下可以找到你生成的系数文件,大概是下面这个样子的:

 

 

这个文件让人看的不太懂。返回fdatool设计界面选择【Analysis->Filter coeffcients】:

 

 

 

系数界面与这个文件里面的数据是一致的。

 

认真观察上面这个界面里的数据,我们发现,文件里面的系数,实际上把它分成两个2阶节相乘的形式,其中还有增益。增益的目的是为了保证计算的精度和系统的稳定性。

选择【edit】->【convert to single section】,这时候系数变成我们熟悉的形式

 

生成的系数C头文件如下:

 

 

指定阶数为2,重复上述步骤生成的IIR滤波器系数文件如下:

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用MATLAB中的fdatool工具生成IIR滤波器参数可以按照以下步骤进行: 1. 打开MATLAB并输入“fdatool”命令,打开fdatool工具。 2. 在工具的界面上方选择“Design FIR”或“Design IIR”选项,根据需求选择IIR滤波器。 3. 在图形界面左侧的“Design Filter”面板中选择滤波器类型(如低通、高通、带通等)和滤波器参数。 4. 在界面的右侧可以对滤波器进行增益调整和控制。可以根据需要在设计参数、阶数、频率等方面进行调节。 5. 调整滤波器参数后,点击界面上的“Update All”按钮,以更新所有参数。 6. 在图形界面下方的“Display”面板中,可以查看设计的滤波器的幅频响应、相频响应等信息。 7. 在图形界面上方的“Export”按钮下拉菜单中,选择“Filter Coefficients”选项。 8. 在弹出的窗口中,选择输出滤波器参数MATLAB工作空间。 9. 在MATLAB命令窗口中,输入参数名称并按下回车键,将滤波器参数存储为MATLAB变量。 10. 可以将滤波器参数保存为.c文件,生成C语言文件。选择“Export”按钮下拉菜单中的“C Code”选项。 11. 在弹出的窗口中,选择输出C语言文件。 12. 指定文件的保存路径,点击保存按钮,将C语言文件保存到指定路径下。 通过以上步骤,可以用MATLAB的fdatool工具生成IIR滤波器参数,并将其导出为C语言文件。 ### 回答2: 使用Matlab中的fdatool可以很方便地生成IIR滤波器参数,并将这些参数转换为C语言文件。 首先,打开Matlab软件并在命令窗口中输入"fdatool"命令,启动fdatool工具。 在fdatool窗口中,点击"Design Filter"按钮,选择想要设计的滤波器类型,比如低通滤波器、高通滤波器、带通滤波器等。然后输入滤波器的截止频率、阶数等参数,可以通过“Filter Design”和“Filter Specifications”选项卡进行参数设置。 设置完滤波器参数后,点击"File"菜单,选择"Export",然后选择"C Source File"选项,保存为.c文件。 此时会弹出一个对话框,可以设置C语言文件的导出选项,例如选择IIR滤波器结构和滤波器的名称等。设置完毕后,点击"OK"保存。 系统会自动生成一个C语言文件,其中包含IIR滤波器参数和滤波函数。我们可以将生成的.c文件复制到C语言开发环境中,然后在需要使用IIR滤波器的程序中调用该函数即可。 总结起来,使用Matlab的fdatool可以方便地生成IIR滤波器参数,并将其转换为C语言文件,方便在C语言环境中使用。 ### 回答3: 使用MATLAB的FDATool生成IIR滤波器参数并导出为C语言文件的步骤如下: 1. 打开MATLAB,输入fdatool命令,打开FDATool滤波器设计工具。 2. 在FDATool界面中,选择"Design New Filter"创建新的滤波器设计。 3. 在Filter Designer窗口中,选择滤波器类型和设计规范。可以选择标准滤波器类型如低通滤波器、高通滤波器、带通滤波器或带阻滤波器,也可以自定义滤波器类型。 4. 根据应用需求和设计规范,设置滤波器的截止频率、通带衰减、阻带衰减等参数。 5. 点击"Design Filter"按钮,进行滤波器设计。 6. 在Design Filter窗口中,可以查看滤波器的频率响应曲线、极点零点图等信息。可以在此处进行优化和调整。 7. 满足要求后,点击"Export"按钮。 8. 在Export窗口中,选择"Filter Coefficients"选项,将滤波器参数导出为C语言文件。 9. 设置导出参数,如滤波器变量名、数组长度等。 10. 点击"Save"按钮,选择保存位置和文件名,导出C语言文件。 这样,就可以使用MATLAB的FDATool生成IIR滤波器参数并导出为C语言文件,以便在C语言环境中使用该滤波器。导出的C语言文件中包含滤波器的系数、极点和零点等信息,可以在C语言代码中使用这些参数来实现滤波功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值