云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > STM32实现IIR滤波器,可用matlab生成的头文件

STM32实现IIR滤波器,可用matlab生成的头文件

  • 62 次阅读
  • 3 次下载
  • 2026/4/26 9:30:50

放假实在无聊,即将到来的高三非常恐怖,先偷闲一把。

matlab的fdatool是好东西,不过很多人不知道该怎么使用它生成的C头文件。

趁着放假有时间,摸索了几天,终于搞定。希望阿莫给条裤子。

该程序已经用于心电采集实验 导联aVF,带宽1-25Hz

实验过程中图片 (原文件名:DSCF6003.JPG)

液晶截图 (原文件名:aVF_LCD.jpg)

不多说,切入正题

这里有个fdatool设计的IIR高通滤波器,采样率400Hz时截止频率1Hz。 设计定型之后,要做些调整。

以下说明中的英文名词有些可能对不上fdatool界面上的原文,请大家意会吧 第一步:

点击菜单中的Edit->Convert Structure 选择Direct Form I ,SOS,(必须是Direct Form I, II不行)

一般情况下,按照默认设置,fdatool设计都是由二阶部分串联组成的。

这种结构的滤波器稳定性比一个section的要好很多,其他方面的性能也好些。 如果不是的话,点击Convert to second order sections。

这时,滤波器的结构(structure)应该显示为 Direct Form I,second order sections 第二步:

选择quantize filter,精度选择single precision floating point (单精度浮点)

之所以不用定点是因为噪声太大,也不容易稳定。

点击菜单中的Targets -> generate c header ,选择export as:single precision floating point (单精度浮点)

填写变量名称时,把NUM改成IIR_B,DEN改成IIR_A,其他不用动,保存为iir_coefs.h

保存好的文件如下: //一大堆注释 //然后:

/* General type conversion for MATLAB generated C-code */ #include \/*

* Expected path to tmwtypes.h

* C:\\Program Files\\MATLAB\\R2010a\\extern\\include\\tmwtypes.h */ /*

* Warning - Filter coefficients were truncated to fit specified data

type.

* The resulting response may not match generated theoretical response.

* Use the Filter Design & Analysis Tool to design accurate * single-precision filter coefficients. */

#define MWSPT_NSEC 9

const int NL[MWSPT_NSEC] = { 1,3,1,3,1,3,1,3,1 }; const real32_T IIR_B[MWSPT_NSEC][3] = { {

0.8641357422, 0, 0 }, {

1, -2, 1 }, {

0.9949035645, 0, 0 }, {

1, -1.999938965, 1 }, {

0.9985351563, 0, 0 }, {

1, -1.99987793, 1 }, {

0.9996337891, 0, 0 }, {

1, -1.99987793, 1 }, {

1, 0, 0 } };

const int DL[MWSPT_NSEC] = { 1,3,1,3,1,3,1,3,1 }; const real32_T IIR_A[MWSPT_NSEC][3] = { {

1, 0, 0 }, {

1, -1.938049316, 0.9401855469

}, {

1, 0, 0 }, {

1, -1.989501953, 0.9900512695 }, {

1, 0, 0 }, {

1, -1.996887207, 0.9971923828 }, {

1, 0, 0 }, {

1, -1.999084473, 0.9993286133 }, {

1, 0, 0 } };

第三步:

打开iir_coefs.h把MWSPT_NSEC替换成IIR_NSEC, NL、DL数组删除掉,real32_T改成float ,

其中有一个#include \不要它了,删掉 改完的文件如下:

#define IIR_NSEC 9

//原来叫做MWSPT_NSEC

const float IIR_B[IIR_NSEC][3] = { //为什么改为float很明显了吧 {

0.8641357422, 0, 0 }, {

1, -2, 1 }, {

0.9949035645, 0, 0

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

放假实在无聊,即将到来的高三非常恐怖,先偷闲一把。 matlab的fdatool是好东西,不过很多人不知道该怎么使用它生成的C头文件。 趁着放假有时间,摸索了几天,终于搞定。希望阿莫给条裤子。 该程序已经用于心电采集实验 导联aVF,带宽1-25Hz 实验过程中图片 (原文件名:DSCF6003.JPG) 液晶截图 (原文件名:aVF_LCD.jpg) 不多说,切入正题 这里有个fdatool设计的IIR高通滤波器,采样率400Hz时截止频率1Hz。 设计定型之后,要做些调整。 以下说明中的英文名词有些可能对不上fdatool界面上的原文,请大家意会吧 第一步: 点击

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com