2阶节IIR算法C语言源码

纯C语言软件算法,没有做过多优化,只是实现了基本IIR算法

/******************************************************************************
* 二阶IIR滤波器单元,采用直接II型
* 由多个2阶节,可以组成更多高阶的滤波器
* 根据参数的不同,可以生成低通,高通,带通,带阻
******************************************************************************/
#include "iir.h"//初始化IIR数据
void IIR_Init(IIR_Typedef *pIIR, IIR_COEF* pCoef)
{int i;for (i=0; i<3; i++){pIIR->fCoefA[i] = pCoef->fCoefA[i];pIIR->fCoefB[i] = pCoef->fCoefB[i];pIIR->fTemp[i]  = 0;}
}//复位历史值
void IIR_Reset(IIR_Typedef *pIIR)
{pIIR->fTemp[0] = 0;pIIR->fTemp[1] = 0;pIIR->fTemp[2] = 0;
}//IIR滤波
float IIR_Filter(IIR_Typedef *pIIR, float fInput)
{float fOutput;//计算输入值pIIR->fTemp[0] = fInput;pIIR->fTemp[0] = pIIR->fTemp[0] - pIIR->fCoefA[1] * pIIR->fTemp[1];pIIR->fTemp[0] = pIIR->fTemp[0] - pIIR->fCoefA[2] * pIIR->fTemp[2];//计算输出值fOutput = 0;  fOutput = fOutput + pIIR->fCoefB[0] * pIIR->fTemp[0];  fOutput = fOutput + pIIR->fCoefB[1] * pIIR->fTemp[1]; fOutput = fOutput + pIIR->fCoefB[2] * pIIR->fTemp[2]; //移动历史值pIIR->fTemp[2] = pIIR->fTemp[1];  pIIR->fTemp[1] = pIIR->fTemp[0];return fOutput; 
}


头文件iir.h

/******************************************************************************
* 二阶IIR滤波器单元,采用直接II型
* 由多个2阶节,可以组成更多高阶的滤波器
* 根据参数的不同,可以生成低通,高通,带通,带阻
******************************************************************************/#ifndef _IIR_H
#define _IIR_H//二阶IIR滤波器参数,和2个历史值
//参数由设计软件直接计算得出
typedef struct
{float fCoefA[3];	//分母多项式的系数Denominatorfloat fCoefB[3];	//分子多项式的系数Numeratorfloat fTemp[3];		//历史值
}IIR_Typedef;//IIR 2阶节的系数
typedef struct
{float fCoefA[3];float fCoefB[3];
}IIR_COEF;//初始化IIR数据
void IIR_Init(IIR_Typedef *pIIR, IIR_COEF* pCoef);//复位历史值
void IIR_Reset(IIR_Typedef *pIIR);//IIR滤波
float IIR_Filter(IIR_Typedef *pIIR, float fInput);#endif // _IIR_H



转载于:https://www.cnblogs.com/kerndev/p/5537389.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU 3709 Balanced Number (数位DP)

题意 求出[x, y] 范围内的平衡数&#xff0c;平衡数定义为&#xff1a;以数中某个位为轴心&#xff0c;两边的数的偏移量为矩&#xff0c;数位权重&#xff0c;使得整个数平衡。 思路 外层枚举平衡点&#xff0c;然后数位DP即可。设计状态&#xff1a; dp[pos][o][left_right] …

跳過 Windows RT的UI

RT启动进入常规桌面 微软Surface RT发布的时间已经不短了&#xff0c;相信很多朋友都已经熟悉了这个全新的平板&#xff0c;并且已经上手。Surface RT开机默认进入的界面为Windows UI&#xff0c;这对于经常使用App的朋友来说并没有什么&#xff0c;但是对于那些经常使用Office…

matlab调用mstg,实验五 双线性变换法设计IIR数字滤波器

实验五 IIR 数字滤波器设计一、实验目的(1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法&#xff1b;(2)学会调用MATLAB 信号处理工具箱中滤波器设计函数设计各种IIR 数字滤波器&#xff0c;学会根据滤波需求确定滤波器指标参数。(3)掌握IIR 数字滤波器的MATLAB 实现方法…

Android知识点剖析系列:深入了解layout_weight属性

前言 Android中layout_weight这个属性对于经常捣鼓UI的我们来说&#xff0c;肯定不会陌生。但是我们在真正使用这个属性时&#xff0c;经常会出现一些莫名奇妙的布局效果&#xff1b;如果仅仅知其然而不知其所以然&#xff0c;一些意外的布局效果一定让我们颇为头疼。在本文中&…

C++ 中explicit的使用

C提供了关键字explicit&#xff0c;可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C中&#xff0c; 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数)&#xff0c; 承担了两个角色。1…

BZOJ 1026 windy数 (数位DP)

题意 区间[A,B]上&#xff0c;总共有多少个不含前导零且相邻两个数字之差至少为2的正整数&#xff1f; 思路 状态设计非常简单&#xff0c;只需要pos、limit和一个前驱数pre就可以了&#xff0c;每次枚举当前位时判断是否与上一位相差2即可。一个需要注意的地方是第一位不用比较…

oracle诊断,Oracle 诊断事件列表

Oracle 诊断事件列表(2013-03-26 18:05:26)标签&#xff1a;oracle诊断事件itORA-10000: controlfile debug event, name control_fileORA-10001: controlfile crash event1ORA-10002: controlfile crash event2ORA-10003: controlfile crash event3ORA-10004: controlfile cra…

考研数学:【以错补错】 降低做题出错率

考研数学&#xff1a;以错补错 降低做题出错率  众所周知&#xff0c;数学需要做题&#xff0c;需要通过做题来巩固掌握&#xff0c;但很多同学却陷入了题海战术&#xff0c;把所有的精力都放在数学练习上&#xff0c;一门心思做题&#xff0c;可几个月下来却没有进展&#x…

treeview右键添加新节点

private void advTree1_MouseDown(object sender, MouseEventArgs e){if (e.Button MouseButtons.Right)//判断你点的是不是右键{Point ClickPoint new Point(e.X, e.Y);Node CurrentNode advTree1.GetNodeAt(ClickPoint);if (CurrentNode ! null)//判断你点的是不是一个节点…

RPM方式安装MySQL5.6

RPM方式安装MySQL5.6 rpm -ivh MySQL-server-5.6.25-1.linux_glibc2.5.x86_64.rpm rpm -ivh MySQL-client-5.6.25-1.linux_glibc2.5.x86_64.rpm rpm -ivh MySQL-devel-5.6.25-1.linux_glibc2.5.x86_64.rpm rpm -ivh MySQL-embedded-5.6.25-1.linux_glibc2.5.x86_64.rpm rpm -iv…

centos7静默搭建oracle11g,Linux静默安装Oracle方法(centos7+oracle11g)

1、 增加虚拟内存ddif/dev/zero of/swapadd bs1024 count2006424mkswap /swapaddswapon /swapadd2、 检查依赖包rpm -q binutils compat-libstdc-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c glibc-2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-dev…

Ms SQL Server 约束和规则

一、SQL约束 约束定义关于列中允许值的规则&#xff0c;是强制完整性的标准机制。 使用约束优先于使用触发器、规则和默认值。查询优化器也使用约束定义生成高性能的查询执行计划。 1&#xff1a;类型 约束的类型一共分三种 域约束&#xff1a; 涉及一个或多个列&#xf…

Qt 独立运行时伴随CMD命令窗口

用Qt写了一个小软件&#xff0c;在把程序release后&#xff0c;打包分装后&#xff0c;发现程序运行的时候会伴随cmd命令窗口&#xff0c;可把我愁怀了 不过功夫不负有心人&#xff0c;在老师和我网友的帮助下&#xff0c;终于搞完了 CONFIG&#xff1a;指定工程配置和编译参数…

Intellij IDEA 快捷键整理(dyCopy)

原文&#xff1a;http://www.cnblogs.com/tonycody/p/3257601.html【常规】CtrlShift Enter&#xff0c;语句完成“&#xff01;”&#xff0c;否定完成&#xff0c;输入表达式时按 “&#xff01;”键CtrlE&#xff0c;最近的文件CtrlShiftE&#xff0c;最近更改的文件ShiftC…

长竖线及长括号

转载&#xff1a;http://blog.sina.com.cn/s/blog_6005d4af0101861l.html 文章修改中要求把花括号和竖线变长&#xff0c;查了下发现下面的几种方法&#xff1a; 1.花括号“{ }”变长&#xff1a; $\left\{...\right\}$&#xff1b; 或者用 $\Big\{...\Big\}$; 2.竖线“|”变长…

php 加入日志功能,php怎么写一个日志功能的函数

我们要写一个写日志的函数,首先需要了解需求,我们一般怎么用日志函数呢?例如,程序执行到某一步,我希望把这个变量(地址)$user_address的值打印到日志,我们希望日志里是这么写的:xx-xx-xx xx:xx $user_address : 上海市杨浦区xxxxx然后每一条日志都要换行,都有日期时间,假设 函…

Ant简单工程的构建

1.在Ant的官方网站http://ant.apache.org/bindownload.cgi下载Ant最新版本&#xff08;我下载的是apache-ant-1.8.2-bin.zip&#xff09;&#xff0c;Ant无需安装&#xff0c;直接解压后设置环境变量即可。 2.测试Ant是否安装成功&#xff0c;在控制台运行ant命令&#xff0c;出…

MVC学习四

第七节 讲述了增加model中类的属性&#xff0c;由于数据库中已存在表&#xff0c;表中没有存在新加的列&#xff0c;所以可以删除数据库或者在数据库中新增一列&#xff0c;另可以在controller中新增一个数据库初始化的类&#xff0c;并在Global.asax添加初始化数据库的代码 …

mysqlpump 备份文件压缩对比

mysqldump&#xff0c;使用single-transaction&#xff0c;通过管道使用gzip压缩&#xff0c;20G单数据库备份real8m15.291suser8m39.617ssys0m16.675s备份文件1.43Gmysqlpump&#xff0c;4线程&#xff0c;使用single-transaction&#xff0c;通过管道使用gzip压缩&#xff0c…

如何让Latex公式字体变小

转载&#xff1a;http://blog.sina.com.cn/s/blog_5e16f1770100gdxh.html 第一种方法&#xff1a;用比较笨的方法&#xff0c;一个一个公式用 \begin{small} \begin{equation} \ldots \end{equation} \end{small} 第二种方法&#xff1a;定义新的变量环境 在开始 \newenvironme…