• 设计滤波系数

打开MATLAB,选择应用程序,点击Filter Design & Analysis

选择Butterworth,设置阶数,采样频率FS,截止频率FC,最后点击Design Filter确定

选择Analysis菜单,点击Filter Coefficients

选择Edit菜单,点击Convert to single section

选择Targets菜单,点击Generate C Header...

选择Export as,选择single-precision float,点击Generate

生成的文件内容如下

/** Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool* Generated by MATLAB(R) 9.0 and the Signal Processing Toolbox 7.2.* Generated on: 27-Nov-2019 07:42:47*//** Discrete-Time IIR Filter (real)* -------------------------------* Filter Structure    : Direct-Form II* Numerator Length    : 7* Denominator Length  : 7* Stable              : Yes* Linear Phase        : No*//* General type conversion for MATLAB generated C-code  */
#include "tmwtypes.h"
/* * Expected path to tmwtypes.h * C:\Program Files\MATLAB\R2016a\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.*/
const int NL = 7;
const real32_T NUM[7] = {0.004106325097,  0.02463795058,  0.06159487367,  0.08212649822,  0.06159487367,0.02463795058, 0.004106325097
};
const int DL = 7;
const real32_T DEN[7] = {1,   -2.021385193,    2.312567234,   -1.521253347,   0.6202822328,-0.1416414529,  0.01423505601
};

C代码实现Butterworlth滤波系数数组定义

float    FACTOR_B[] = {0.004106325097,  0.02463795058,  0.06159487367,  0.08212649822,  0.06159487367, 0.02463795058, 0.004106325097};
float   FACTOR_A[] = {1,   -2.021385193,    2.312567234,   -1.521253347,   0.6202822328,  -0.1416414529,  0.01423505601};  

Butterworlth数据结构


typedef struct
{float xBuffer[FACTOR_NUMBER];float yBuffer[FACTOR_NUMBER];
}BUTTER_WORTH_BUFFER;

Butterworth算法实现

static BUTTER_WORTH_BUFFER s_ecgFilter;
#define FACTOR_NUMBER 7uint16_t buterworlthFilter(uint16_t x)
{uint32_t i;//运算之前Buf向前移动一个位置,以保存之前Buf的数据;for(i=FACTOR_NUMBER-1; i>0;i--){s_ecgFilter.yBuffer[i] = s_ecgFilter.yBuffer[i-1];s_ecgFilter.xBuffer[i] = s_ecgFilter.xBuffer[i-1];}s_ecgFilter.xBuffer[0] = x;s_ecgFilter.yBuffer[0] = 0;for(i=1;i<FACTOR_NUMBER;i++){s_ecgFilter.yBuffer[0] = s_ecgFilter.yBuffer[0]+FACTOR_B[i]*s_ecgFilter.xBuffer[i];s_ecgFilter.yBuffer[0] = s_ecgFilter.yBuffer[0]-FACTOR_A[i]*s_ecgFilter.yBuffer[i];}s_ecgFilter.yBuffer[0] = s_ecgFilter.yBuffer[0]+FACTOR_B[0]*s_ecgFilter.xBuffer[0];return (uint16_t)s_ecgFilter.yBuffer[0];
}

Butterworth滤波器设计(IIR类型)相关推荐

  1. [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)

    [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计) ​ IIR滤波器主要设计方法先设计一个模拟低通滤波器,然后把它转化为形式上的数字滤波器.但对于FIR滤波器来说,设计方法的关键要求之一 ...

  2. matlab中最好用的滤波函数,谁有matlab滤波器设计实例,想找个参考,最好是hamming窗,低通 fir滤波器。...

    满意答案 doublesx 2013.06.29 采纳率:45%    等级:11 已帮助:8601人 利用汉宁窗设计Ⅰ型数字高通滤波器 clear all; Wp=0.6*pi; Ws=0.4*pi ...

  3. scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II )

    scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II ) 各种滤波接口 滤波器接口 含义 butt ...

  4. butter滤波器是iir吗_如何快速设计一个IIR滤波器

    在文章如何快速设计一个FIR滤波器(一)以及如何快速设计一个FIR滤波器(二)等文章中,我们讨论了如何设计FIR(Finite Impulse Response Filter),FIR有很多优点,比如 ...

  5. butter滤波器是iir吗_如何快速设计应用一个IIR滤波器

    在小平:如何快速设计应用一个FIR滤波器 中,我们讨论了如何设计一个FIR滤波器,接下来我们介绍IIR滤波器.和设计FIR滤波器一样,我们可以粗略的设计IIR滤波器(幅频响应不精确,设计简单),也可以 ...

  6. MATLAB IIR滤波器设计函数buttord与butter

    设计巴特沃斯IIR滤波器可使用butter函数和buttord函数. 第一:使用buttord函数先求得最小阶数和截止频率:[n,Wn]= buttord(Wp,Ws,Rp,Rs). 理解:上式中n代 ...

  7. 算法学习 - 模拟滤波器(巴特沃斯、贝塞尔、切比雪夫、椭圆)及IIR滤波器设计

    摘要: 在进行信号处理算法的嵌入式代码实现时,经常需要设计滤波器来对信号进行预处理或者后处理.常用的有IIR滤波器和FIR滤波器.虽然IIR滤波器在稳定性和相位响应上比FIR滤波器较差,但是在相同滤波 ...

  8. butter滤波器是iir吗_MATLAB IIR滤波器设计函数buttord与butter

    (4)Ws -阻带截止频率 标量| 二元向量 阻带截止频率,指定为标量或二元向量,值在0到1之间,其中1对应于归一化的奈奎斯特频率πrad / sample. 数据类型:单| 双 (5)Rp-通带纹波 ...

  9. 基于MATLAB的IIR滤波器设计与实现

    基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的 ...

  10. 数字信号处理6:IIR滤波器设计

    IIR滤波器设计 文章目录 IIR滤波器设计 1. 简介 2. 设计步骤简明 3. 拉普拉斯变换和Z变换 3.1 拉普拉斯变换 3.2 Z变换 4. 双线性变换法 4.1 模拟域与数字域的映射 4.2 ...

最新文章

  1. 从零实现Vue的组件库(十)- Select 实现
  2. DSP的EMIF接口通信FPGA
  3. 请写出sfr和sbit的语句格式_最新最全 Oracle ORA-01861: 文字与格式字符串不匹配
  4. 迅速解决!!!!!启动Tomcat报错PermGen space
  5. dict过滤 python_关于python:过滤dict以只包含某些键?
  6. ES6 - 字符串模板与新增字符串方法
  7. window 内核详尽分析
  8. 直播 | 北京邮电大学助理教授王啸:网络嵌入的最新进展
  9. SQLServer跟踪相关
  10. 非线性回归模型(part1)--神经网络
  11. atitit.设计文档---操作日志的实现
  12. 30.Linux/Unix 系统编程手册(上) -- 线程:线程同步
  13. 配置Spring的用于解决懒加载问题的过滤器
  14. Storm Control
  15. 重物码垛搬运机器人_米克力美AGV:工业机器人的应用场景
  16. mnist数据集无法下载
  17. python头像右上角加红色数字_「微信头像右上角数字」微信头像右上角红色数字怎么添加? - seo实验室...
  18. CISP-PTS学习笔记-XSS
  19. linux raid5 性能,RAID级别及各个级别特性
  20. 这一刻,听见华为FTTR的星光四重奏

热门文章

  1. OneNote使用技巧 - 7.一键修改字体样式大小(Onestatic宏插件使用,附常用宏命令代码)
  2. win10没有realtek高清晰音频管理器_Win10如何让电脑睡眠不断网?电脑睡眠状态不断网继续下载的方法...
  3. 如何在IDEA中配置Tomcat,解决配置时No Artifacts Configured问题
  4. 221.Beta多样性PCoA和NMDS排序
  5. python实现高斯消元法求线性方程组的解
  6. 如何删除 R 中的异常值
  7. 1. NET 6.0 前言
  8. IC设计职位详解之“数字前端设计工程师”就业必学课程
  9. d盘不见了 计算机打不开,D盘不见了怎么找回 电脑D盘没了解决方法
  10. java中的this是什么意思