fir 低通滤波器 c语言
时间: 2023-08-18 10:11:03 浏览: 136
在C语言中实现FIR低通滤波器的代码可以参考以下示例代码:
```c
#define N 51 // 滤波器系数的长度
#define M 100 // 输入信号的长度
float h\[N\] = {0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.19, 0.18, 0.17, 0.16, 0.15, 0.14, 0.13, 0.12, 0.11, 0.1, 0.09, 0.08, 0.07, 0.06, 0.05, 0.04, 0.03, 0.02, 0.01, 0.0}; // 滤波器系数数组
float x\[M\]; // 输入信号数组
float y\[M\]; // 输出信号数组
int main() {
// 生成输入信号,这里以正弦波为例
float frequency = 1000; // 正弦波频率
float amplitude = 1.0; // 正弦波幅值
float samplingRate = 2000; // 采样率
for (int i = 0; i < M; i++) {
x\[i\] = amplitude * sin(2 * M_PI * frequency * i / samplingRate);
}
// FIR滤波器处理过程
for (int n = 0; n < M; n++) {
y\[n\] = 0;
for (int k = 0; k < N; k++) {
if (n - k >= 0)
y\[n\] += h\[k\] * x\[n - k\];
}
}
// 输出滤波结果
for (int i = 0; i < M; i++) {
printf("%f\n", y\[i\]);
}
return 0;
}
```
在这个示例代码中,我们首先定义了一个长度为N的滤波器系数数组h\[\],并且生成了一个长度为M的正弦波输入信号数组x\[\]。然后,我们进行FIR滤波器处理过程,即对每个时刻n,将输入信号在时域上和滤波器系数进行卷积操作得到输出信号y\[n\]。最后,我们输出滤波结果。\[2\]\[3\]
#### 引用[.reference_title]
- *1* [C语言编写FIR数字低通滤波器](https://blog.csdn.net/u012746607/article/details/70045508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [用C语言实现一个FIR低通滤波器算法](https://blog.csdn.net/xinbo7077/article/details/130875988)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文