welford算法 c语言实现
时间: 2023-12-01 16:06:01 浏览: 305
Welford算法是一种用于计算数据流中均值和标准差的算法,它具有较高的精度和较低的内存消耗。
以下是Welford算法的C语言实现:
```c
#include <stdio.h>
#include <math.h>
void welford(double x, int n, double *mean, double *variance) {
double delta, delta2;
delta = x - *mean;
*mean += delta / n;
delta2 = x - *mean;
*variance += delta * delta2;
}
int main() {
double data[] = {1.0, 2.0, 3.0, 4.0, 5.0};
int n = sizeof(data) / sizeof(double);
double mean = data[0], variance = 0.0;
int i;
for (i = 1; i < n; i++) {
welford(data[i], i + 1, &mean, &variance);
}
printf("Mean: %f\n", mean);
printf("Standard deviation: %f\n", sqrt(variance / n));
return 0;
}
```
这个示例代码计算了数据流中的均值和标准差。在每次迭代中,Welford算法接受一个新的数据点和当前的均值和方差估计,并使用新的数据点更新估计值。最终,我们计算均值和标准差并输出结果。
阅读全文