对C语言数组进行移动平均
时间: 2023-08-08 12:14:06 浏览: 203
同样,C语言中也可以实现数组的移动平均。下面是一个示例代码:
```c
#include <stdio.h>
void moving_average(double arr[], int size, int window_size, double ma[]) {
int i, j;
double sum;
for (i = 0; i <= size-window_size; i++) {
sum = 0;
for (j = i; j < i+window_size; j++) {
sum += arr[j];
}
ma[i] = sum / window_size;
}
}
int main() {
double arr[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
double ma[7];
int window_size = 3;
int size = 10;
moving_average(arr, size, window_size, ma);
int i;
for (i = 0; i <= size-window_size; i++) {
printf("%f ", ma[i]);
}
return 0;
}
```
函数 `moving_average` 接收一个原始数组 `arr`,数组大小为 `size`,窗口大小为 `window_size`,并将移动平均结果存储在 `ma` 数组中。在 `main` 函数中,我们定义了一个长度为 10 的数组 `arr`,窗口大小为 3,然后调用 `moving_average` 函数计算移动平均,并输出结果。
需要注意的是,在 C 语言中,数组的下标从 0 开始。因此,在计算移动平均时,窗口的起始位置是 `i`,结束位置是 `i+window_size-1`。
阅读全文