y = filter(b, 1, x); C语言实现
时间: 2024-04-15 17:28:26 浏览: 53
使用C语言实现
在 C 语言中,你可以使用循环来实现一维滤波操作。下面是一个示例代码,演示如何实现类似于 MATLAB 中 `filter(b, 1, x)` 的功能:
```c
#include <stdio.h>
#define N 5 // 输入信号长度
#define M 3 // 滤波器系数长度
void filter(double b[], double x[], double y[]) {
for (int i = 0; i < N; i++) {
y[i] = 0;
for (int j = 0; j < M; j++) {
if (i - j >= 0) {
y[i] += b[j] * x[i - j];
}
}
}
}
int main() {
double b[M] = {0.25, 0.5, 0.25}; // 滤波器系数
double x[N] = {1, 2, 3, 4, 5}; // 输入信号
double y[N]; // 存储滤波后的结果
filter(b, x, y); // 进行一维滤波
printf("滤波后的结果:\n");
for (int i = 0; i < N; i++) {
printf("%g ", y[i]);
}
printf("\n");
return 0;
}
```
在这个示例代码中,`filter` 函数用于实现一维滤波操作。它使用两个嵌套的循环,外层循环遍历输入信号 `x` 的每个样本,内层循环计算滤波后的输出样本。
滤波器系数 `b` 和输入信号 `x` 都是一维数组,长度分别为 `M` 和 `N`。滤波后的结果存储在数组 `y` 中。
你可以根据自己的需求修改滤波器系数和输入信号的数据。在示例代码中,输出滤波后的结果使用 `printf` 函数进行打印展示。
阅读全文