用C语言写一个电感采集滤波程序
时间: 2023-09-09 13:13:32 浏览: 50
下面是一个用C语言实现的电感采集滤波程序,使用的是一阶低通滤波器:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265358979323846
int main()
{
// 采样频率
double fs = 1000;
// 信号频率
double f_signal = 50;
// 电感值
double L = 10e-3;
// 电容值
double C = 10e-6;
// 计算共振频率
double f_resonance = 1 / (2 * PI * sqrt(L * C));
// 调节电容的值,使得共振频率等于信号频率
C = 1 / (4 * PI * PI * L * f_signal * f_signal);
// 计算RC低通滤波器的截止频率
double f_cutoff = 1 / (2 * PI * L * C);
// 生成信号
double t[1000];
int i;
for (i = 0; i < 1000; i++) {
t[i] = i / fs;
}
double signal[1000];
for (i = 0; i < 1000; i++) {
signal[i] = sin(2 * PI * f_signal * t[i]);
}
// 添加高斯白噪声
double noise[1000];
for (i = 0; i < 1000; i++) {
noise[i] = 0.1 * rand() / (double)RAND_MAX;
}
double noisy_signal[1000];
for (i = 0; i < 1000; i++) {
noisy_signal[i] = signal[i] + noise[i];
}
// 构建RC低通滤波器
double alpha = 1 / (1 + 2 * PI * f_cutoff / fs);
double y[1000];
y[0] = noisy_signal[0];
for (i = 1; i < 1000; i++) {
y[i] = alpha * y[i-1] + (1 - alpha) * noisy_signal[i];
}
// 输出结果
for (i = 0; i < 1000; i++) {
printf("%f, %f, %f\n", t[i], noisy_signal[i], y[i]);
}
return 0;
}
```
该程序使用了一阶低通滤波器对电感采集的信号进行滤波,并添加了高斯白噪声进行模拟。具体实现中,需要先计算出电路的共振频率和RC低通滤波器的截止频率,然后使用一阶滤波器对信号进行滤波。最后,输出滤波前后的信号数据。