三阶Bessel滤波器c语言实现
时间: 2023-05-12 12:03:28 浏览: 83
以下是三阶Bessel滤波器的C语言实现代码:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
double bessel(double x) {
double sum = 0.0, t = 1.0;
int i, j;
for (i = 0; i <= 5; i++) {
t = 1.0;
for (j = 1; j <= i; j++) {
t *= x / j;
}
sum += t * t;
}
return sum;
}
void bessel_filter(double *input, double *output, int n, double fc, double fs) {
double wc = 2 * PI * fc / fs;
double k = bessel(wc) / bessel(1.0);
double a[4], b[4];
a[0] = 1.0;
a[1] = -2.0 * cos(wc);
a[2] = 1.0;
b[0] = k;
b[1] = 0.0;
b[2] = -k;
int i;
for (i = 0; i < n; i++) {
if (i < 3) {
output[i] = input[i];
} else {
output[i] = b[0] * input[i] + b[1] * input[i-1] + b[2] * input[i-2] - a[1] * output[i-1] - a[2] * output[i-2];
}
}
}
int main() {
double input[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
double output[10];
bessel_filter(input,
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)