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.pswp.cn/news/259499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259499.shtml
英文地址,請注明出處:http://en.pswp.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…