Butterworth滤波器设计(IIR类型)
设计滤波系数
打开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类型)相关推荐
- [Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计)
[Matlab]FIR滤波器设计:(基本窗函数FIR滤波器设计) IIR滤波器主要设计方法先设计一个模拟低通滤波器,然后把它转化为形式上的数字滤波器.但对于FIR滤波器来说,设计方法的关键要求之一 ...
- matlab中最好用的滤波函数,谁有matlab滤波器设计实例,想找个参考,最好是hamming窗,低通 fir滤波器。...
满意答案 doublesx 2013.06.29 采纳率:45% 等级:11 已帮助:8601人 利用汉宁窗设计Ⅰ型数字高通滤波器 clear all; Wp=0.6*pi; Ws=0.4*pi ...
- scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II )
scipy Matlab-style IIR 滤波器设计上(Butterworth\Chebyshev type I \Chebyshev type II ) 各种滤波接口 滤波器接口 含义 butt ...
- butter滤波器是iir吗_如何快速设计一个IIR滤波器
在文章如何快速设计一个FIR滤波器(一)以及如何快速设计一个FIR滤波器(二)等文章中,我们讨论了如何设计FIR(Finite Impulse Response Filter),FIR有很多优点,比如 ...
- butter滤波器是iir吗_如何快速设计应用一个IIR滤波器
在小平:如何快速设计应用一个FIR滤波器 中,我们讨论了如何设计一个FIR滤波器,接下来我们介绍IIR滤波器.和设计FIR滤波器一样,我们可以粗略的设计IIR滤波器(幅频响应不精确,设计简单),也可以 ...
- MATLAB IIR滤波器设计函数buttord与butter
设计巴特沃斯IIR滤波器可使用butter函数和buttord函数. 第一:使用buttord函数先求得最小阶数和截止频率:[n,Wn]= buttord(Wp,Ws,Rp,Rs). 理解:上式中n代 ...
- 算法学习 - 模拟滤波器(巴特沃斯、贝塞尔、切比雪夫、椭圆)及IIR滤波器设计
摘要: 在进行信号处理算法的嵌入式代码实现时,经常需要设计滤波器来对信号进行预处理或者后处理.常用的有IIR滤波器和FIR滤波器.虽然IIR滤波器在稳定性和相位响应上比FIR滤波器较差,但是在相同滤波 ...
- butter滤波器是iir吗_MATLAB IIR滤波器设计函数buttord与butter
(4)Ws -阻带截止频率 标量| 二元向量 阻带截止频率,指定为标量或二元向量,值在0到1之间,其中1对应于归一化的奈奎斯特频率πrad / sample. 数据类型:单| 双 (5)Rp-通带纹波 ...
- 基于MATLAB的IIR滤波器设计与实现
基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的 ...
- 数字信号处理6:IIR滤波器设计
IIR滤波器设计 文章目录 IIR滤波器设计 1. 简介 2. 设计步骤简明 3. 拉普拉斯变换和Z变换 3.1 拉普拉斯变换 3.2 Z变换 4. 双线性变换法 4.1 模拟域与数字域的映射 4.2 ...
最新文章
- 从零实现Vue的组件库(十)- Select 实现
- DSP的EMIF接口通信FPGA
- 请写出sfr和sbit的语句格式_最新最全 Oracle ORA-01861: 文字与格式字符串不匹配
- 迅速解决!!!!!启动Tomcat报错PermGen space
- dict过滤 python_关于python:过滤dict以只包含某些键?
- ES6 - 字符串模板与新增字符串方法
- window 内核详尽分析
- 直播 | 北京邮电大学助理教授王啸:网络嵌入的最新进展
- SQLServer跟踪相关
- 非线性回归模型(part1)--神经网络
- atitit.设计文档---操作日志的实现
- 30.Linux/Unix 系统编程手册(上) -- 线程:线程同步
- 配置Spring的用于解决懒加载问题的过滤器
- Storm Control
- 重物码垛搬运机器人_米克力美AGV:工业机器人的应用场景
- mnist数据集无法下载
- python头像右上角加红色数字_「微信头像右上角数字」微信头像右上角红色数字怎么添加? - seo实验室...
- CISP-PTS学习笔记-XSS
- linux raid5 性能,RAID级别及各个级别特性
- 这一刻,听见华为FTTR的星光四重奏
热门文章
- OneNote使用技巧 - 7.一键修改字体样式大小(Onestatic宏插件使用,附常用宏命令代码)
- win10没有realtek高清晰音频管理器_Win10如何让电脑睡眠不断网?电脑睡眠状态不断网继续下载的方法...
- 如何在IDEA中配置Tomcat,解决配置时No Artifacts Configured问题
- 221.Beta多样性PCoA和NMDS排序
- python实现高斯消元法求线性方程组的解
- 如何删除 R 中的异常值
- 1. NET 6.0 前言
- IC设计职位详解之“数字前端设计工程师”就业必学课程
- d盘不见了 计算机打不开,D盘不见了怎么找回 电脑D盘没了解决方法
- java中的this是什么意思