这是一个求手脉倍率((Hw_Control.mult_ratio)与手脉脉冲计数延迟次数即累计过去n次的平均值(Hw_Control.lag_num)之间关系算法的计算过程笔记文档
1、已知
mult_ratio=1时 lag_num=10;
mult_ratio=10时 lag_num=20;
.mult_ratio==100时 lag_num=30;
以此类推
2、设lag_num为X,mult_ratio为Y,推导出以下公式
3、算法,y等于x的n次方,已知x、y,求n
如果y等于x的n次方,已知x、y,求n,那么n可以通过求对数来解决。因为x的n次方等于y,所以n等于以x为底y的对数。因此,n=ln(y)/ln(x)。这里ln表示自然对数,也就是以e为底的对数。
将上述公式转换为C语言函数,如下所示:
#include <math.h>
double calculate_n(double x, double y) {
return log(y) / log(x);
}
这个函数使用了C语言的log()函数,它返回以e为底的对数。因此,我们可以使用log()函数来计算以x为底y的对数。这个函数返回一个double类型的值,它是n的值。
4、在本例中实现
double calculate_n(double x, double y) {
return log(y) / log(x);
}
X=10; y=Y, 结果N=(X/10)-1;
X=10*(N+1);
X=10*((log(y) / log(10))+1)
lag_num = 10*((log(mult_ratio) / log(10))+1)