C写个50Hz陷波器程序
时间: 2023-10-13 21:06:17 浏览: 159
以下是一个简单的50Hz陷波器程序示例:
```c
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
int main()
{
// 采样频率
double fs = 1000.0;
// 我们要陷波的频率
double f0 = 50.0;
// 计算角频率
double w0 = 2.0 * PI * f0 / fs;
// 计算陷波器的系数
double a1 = -2.0 * cos(w0);
double a2 = 1.0;
double b0 = 1.0;
double b1 = -2.0 * cos(w0);
double b2 = 1.0;
// 初始化变量
double x[3] = {0.0, 0.0, 0.0};
double y[3] = {0.0, 0.0, 0.0};
// 读取输入信号
double input;
while (scanf("%lf", &input) == 1)
{
// 计算输出
double output = b0 * input + b1 * x[1] + b2 * x[0] - a1 * y[1] - a2 * y[0];
// 更新变量
x[0] = x[1];
x[1] = input;
y[0] = y[1];
y[1] = output;
// 输出结果
printf("%lf\n", output);
}
return 0;
}
```
这个程序实现了一个二阶陷波器,可以抑制50Hz的干扰信号。你可以根据需要调整采样频率和要陷波的频率。注意,这个程序只是一个简单的示例,实际使用时还需要进行更多的优化和测试。
相关推荐
![](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)