功能介绍
- 描述:精简的原子函数,外部整型/浮点数组均可调用。
- 功能:计算数据中的最值、平均值便于统计分析。
- 输入:数组元素,最值和均值指针地址
- 输出:最值和均值
C代码函数
// 函数功能:计算数据中的最大值、最小值、平均值
// in: val
// in/out: min, max, avg
void AnalysDataMinMaxAvg(float val, float *min, float *max, float *avg)
{
static int32_t num;
static float sum;
num++;
if (val > *max) {
*max = val;
}
if (val < *min) {
*min = val;
}
sum += val;
*avg = sum / num;
// printf("debuginfo: num=%d,\n\
// max=%.3f, min=%.3f, avg=%.3f\n",
// num, *max, *min, *avg);
return;
}
Demo
void AnalysDataMinMaxAvg(float val, float *min, float *max, float *avg);
void DataAnalysDemo(void)
{
// 整型数组测试
int iNums[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
float min, max, avg;
int i;
min = 1000.;
max = -1.;
for (i = 0; i < 10; i++) {
AnalysDataMinMaxAvg((float)(iNums[i]), &min, &max, &avg);
}
printf("max=%.3f, min=%.3f, avg=%.3f\n", max, min, avg);
// 浮点数组测试
float fNums[10] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9};
min = 1000.;
max = -1.;
for (i = 0; i < 10; i++) {
AnalysDataMinMaxAvg((float)(fNums[i]), &min, &max, &avg);
}
printf("max=%.3f, min=%.3f, avg=%.3f\n", max, min, avg);
}
int main(void)
{
printf("Start!\n");
DataAnalysDemo();
printf("Done!\n");
return 0;
}
output:
max=9.000, min=0.000, avg=4.500
max=0.900, min=0.000, avg=2.475