赞
踩
IIR滤波器是一种数字滤波器,它利用递归方式实现,因此也称为递归滤波器。IIR滤波器的特点是具有无限冲激响应,因此它在数字信号处理领域中应用广泛,如音频处理、图像处理等。
实现IIR滤波器的方法有很多,其中比较常见的是使用二阶IIR滤波器级联的方式来实现。下面是一个简单的双二阶IIR滤波器的C++实现:
- #include <iostream>
- #include <cmath>
-
- using namespace std;
-
- const int N = 2;
-
- // IIR滤波器系数
- const double b[][N+1] = {
- {0.0545, 0.1090, 0.0545, 1.0000, -0.4684},
- {1.0000, -1.9919, 0.9920, 1.0000, -1.9917}};
-
- const double a[][N+1] = {
- {1.0000, -0.7265, 0.2582, 1.0000, -0.2723},
- {1.0000, -1.9887, 0.9898, 1.0000, -1.9884}};
-
- // IIR滤波器状态
- double w[][N+1] = {
- {0, 0, 0},
- {0, 0, 0}};
-
- // IIR滤波器处理函数
- double iir_filter(double x)
- {
- double y = 0;
- for (int i = 0; i < 2; i++) {
- double tmp = b[i][0] * x + w[i][0];
- for (int j = 1; j <= N; j++) {
- tmp -
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。