"); //-->
本节主要介绍如何使用matlab2008生成IIR数字滤波器系数。
一、在matlab上设计一个高通滤波
打开matlab程序之后,在命令行窗口输入“fdatool”,弹出滤波器设计对话框如图6
图6.matlab中fdatool滤波器设计
为了便于分析,我们先从设计一个简单的一级2阶高通滤波器开始,按照下图中的步骤进行。
1.Design Method用于选择IIR滤波器还是FIR滤波器,这里我们选择IIR滤波器,类型选择Chebyshev Type I,当然你也可以选择其他类型,不同类型的频率响应不同,选择后默认的滤波器结构是直接II型,如图7中的蓝色框所示。
2.ResponseType用于选择低通、高通、带通以及陷波,选择高通滤波“Highpass”,这里我们选择高通滤波用于滤出300HZ以下的工频频率。
3.Fiter Order 选择阶数,为了使用STM32官方库给的程序,这里需要填入偶数,为了简单起见,先选择一个2阶滤波器做实验。
4.Frequency Specifications用于设置采样频率以及截止频率,这里填入8000以及300,也就是采样率是8KHz,300Hz以下的频率都不能通过。
5.点击“Design Filter”,matlab将生成一个按照以上参数设计的滤波器,点击图中数字6的图标,可以在坐标框中看到该滤波器的幅频响应,正如图中所示,频率在300Hz以下的信号将被滤除。
图7.设计高通IIR滤波器
二、导出系数
设计完毕一个高通滤波器之后,这个模型就已经在matlab内部保存起来了。接下来就需要将模型的参数导出来以供stm32f1使用,在导出数据之前,先看一下用matlab将该数据模型实例化之后是什么样子。
按照图中数字标号进行,第一步点击左边小图标,第二步“Build model using basic elements”这一项打钩,右边四个灰色的项将自动打钩,默认不要修改,最后点击“Realize Model”,matlab将自动把滤波器的数学模型通过仿真的形式展现出来,在弹出的窗口中双击模型,双击之后将在新窗口中
展示该模型的内部结构,为了便于观察分析,这里我将模型的各个模块进行了位置调整,并将各放大器的增益都用数字表示出来了。
图8.将滤波器实例化
图9.生成的仿真模型
图10.模型内部结构
由该图可以看出,这是一个典型的一级二阶直接II型结构的滤波器,若是我们在前面的fdatool中选择4阶以上的滤波器,那么这个模型内部将会有更多的二阶结构级联。
导出C语言的滤波器系数
接下来我们看一下滤波器数据模型的系数到底是如何对应到图10中所示结构的系数的。
在fdatool中点击”Targets”菜单下的”Generate C Header”,弹出下面的对话框,图中”Data type use in export”选项用于选择导出的数据类型,比如双精度浮点、单精度浮点、16位无符号定点、32位有符号定点等等,这里我们先导出为双精度浮点,定点计算比较麻烦,在以后的教程中再举例说明。
图11.基于C系数的导出
选好之后直接点击”Gererate”,弹出一个对话框让你填写保存数据文件的文件名,这里默认为”fdacoefs.txt”。在我们保存的目录下打开fdacoefs.txt文件,打开后出现以下代码
#define MWSPT_NSEC 3 //NL、DL数组中元素的个数
const int NL[MWSPT_NSEC] = { 1,3,1 };//定义分子数组NUM[MWSPT_NSEC][3]有效数据的个数,比如{ 1,3,1 }就表示数组NUM[][]中第一行第一个数据有效,第二行三个数据全都有效,第三行第一个数据有效,以此类推。
const real64_T NUM[MWSPT_NSEC][3] = {
{ //第一个数有效,对应图12中输入的增益系数s(1),图中用蓝色圈框住。
0.0398344010957, 0, 0
},
{ //三个数都有效,对应图12中右侧系数b,图中用蓝色圈框住
1, -2, 1
},
{ //第一个数有效,对应图12中输出的增益系数,图中用金色表示
19.79025967934, 0, 0
}
};
const int DL[MWSPT_NSEC] = { 1,3,1 };//定义分母数组DEN[MWSPT_NSEC][3]有效数据的个数,比如{ 1,3,1 }就表示数组DEN[][]中第一行第一个数据有效,第二行三个数据全都有效,第三行第一个数据有效,以此类推。
const real64_T DEN[MWSPT_NSEC][3] = {
{
1, 0, 0
},
{ //三个数都有效,对应图12中左侧系数a,图中用红色圈框住
1, -1.746571017897, 0.7915263152984
},
{
1, 0, 0
}
};
图12.滤波器系数
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
2.5D封装,成为香饽饽
一道受用终身的测试题
请问鱼板的JTAG调试头可以用在ARM9核的CPU上吗?
MCP23016 16 位I2C_ I_O 扩展器
“shangziyun”STM32F103ZET6读写24C02超级终端显示视频
由HT2880构成的多种声效发生器
拿下Meta超级大单+10%股权绑定,AMD稳坐算力\"第二选择\"
开关式警音发生器(KD9561)
MAX5477_MAX5478_MAX5479 数字电位器
由CC4040构成的电子校音器
2026年全球显示设备支出将大增,OLED成主要驱动力
三星HBM4,传独供英伟达最高端GPU
MCU,智能觉醒
为什么我的SDT251用JTAG调试不能用呢?
“奋斗STM32”的超声波测距串口显示视频
“zangchao”STM32与51单片机串口通信演示视频
北大芯片突破极限:造出迄今尺寸最小铁电晶体管
“百宝箱”VS“语音短信” 移动联通明日拼服务
多音仿声发生器
消息称苹果iPhone 18 Pro/Max将采用更小灵动岛,无屏下Face ID
春晚四款人形机器人,用的谁家零部件?
“shangziyun”的跑马灯视频
具可编程基准的同步降压型稳压器
由CH4040组成的声响发生器
韩国最新报告:仅在存储芯片领域领先中国 先进制造技术已经全面落后
mc14536b 可编程定时器
MCP1630_MCP1630V 高速脉宽调制器
又有机会出去玩啦!大家给给意见呀
MCP1700 低静态电流LDO
“违背乔布斯意愿”?苹果MacBook Pro要加触摸屏了,还带灵动岛