2020/11/22 修改
float get_K(uint8 count , uint8 dataCol_X[] , uint8 dataRow_Y[])
{
float k = 0;
float aveCol_X = 0;
float aveRow_Y = 0;
uint16 sum_XY = 0;
uint16 sumRow_Y = 0;
uint16 sumCol_X = 0;
uint32 sumCol_X2 = 0;
for(uint16 i = 0 ; i < count ; i++)
{
sumCol_X += dataCol_X[i];
sumRow_Y += dataRow_Y[i];
sumCol_X2 += dataCol_X[i] * dataCol_X[i];
sum_XY += (dataCol_X[i] * dataRow_Y[i]);
}
aveCol_X = (float)sumCol_X / count;
aveRow_Y = (float)sumRow_Y / count;
if(sumCol_X2 - aveCol_X * aveCol_X * count)
{
k = (sum_XY - aveCol_X * aveRow_Y * count) /
(sumCol_X2 - aveCol_X * aveCol_X * count);
}
else
k = 0;
return k;
}
上面的源码已经处理斜率为∞情况
下面的源码没有处理斜率为∞情况
float get_K(uint8 count , uint8 dataCol_X[count] , uint8 dataRow_Y[count])
{
float k = 0;
float aveCol_X = 0;
float aveRow_Y = 0;
uint16 sum_XY = 0;
uint16 sumRow_Y = 0;
uint16 sumCol_X = 0;
uint32 sumCol_X2 = 0;
for(uint16 i = 0 ; i < count ; i++)
{
sumCol_X += dataCol_X[i];
sumRow_Y += dataRow_Y[i];
sumCol_X2 += dataCol_X[i] * dataCol_X[i];
sum_XY += (dataCol_X[i] * dataRow_Y[i]);
}
aveCol_X = 1.0 * sumCol_X / count;
aveRow_Y = 1.0 * sumRow_Y / count;
k = (sum_XY - aveCol_X * aveRow_Y * count) /
(sumCol_X2 - aveCol_X * aveCol_X * count);
return k;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)