我有一个光传感器读取0到4095的光强度。我努力用光的平方反比定律写一个方程,这样当光线最低时(让我们说最低的环境光是50),它返回1,如果最高(4095),则返回26,但关键的是从1到26的增量要求光以指数方式增加,即:
123 4 5 6 7 8 9 10 ...27
light intensity ->
对等式的任何建议?我似乎无法弄明白。语言是C.
答案 0 :(得分:1)
您想要将4095到50间隔分成25个相等的段(26-1)。这意味着每个"强度段的宽度"是:
(4095-50)/25 = 161.8
因此,如果变量x
的范围是1到26,那么距离的等式将是:
D = sqrt( 1 / (4095 - (x * 161.8)) )
这是以Intensity_value = 1/D^2
作为比例(我说"强度值"因为如果它是真正的强度,它不包括比例常数 - 我们'为这个问题处理任意单位。)
换句话说,如果您在一行上标记了x
,并且每个x
值与原点的距离为D
,那么您将获得您显示的结果1
到26
。我假设,从你的图表中,当你走到右边时,强度正在下降。
您应该能够针对不同的强度范围和相应的x
的不同范围进行概括。
答案 1 :(得分:0)
如果您的目的是在域[1,4095]上找到一些指数函数,其值在[1,26]范围内,那么这将满足以下条件:
f(x) = exp [ ( x - 50) * ln( 26) / ( 4095 - 50)
]
如果您的目的是找到满足平方反比定律的函数,那么;
这将有效:
(f( x))^2 = ( 1 / ( 4095 - ( x * ( 4095 - 50) / 25)) )
f(x) = sqrt( 1 / ( 4095 - ( x * ( 4095 - 50) / 25)) )
答案 2 :(得分:0)
尝试I = a.R ^ 2 + b的倒数,a = 4090/676,b = -1,其中I是强度。
我通过假设上述函数并插入值对1,50和26,4095并求解a和b来获得此结果。
答案 3 :(得分:0)
我不知道物理,但从你的解释我相信你正在寻找对数插值;这可以通过以下方式完成。
y = ln(x-50) * (26 - 1 / ln(4095-50) ) + 1
这里使用50,26和1作为参数来拉伸和移动函数以映射50到1和4095到26;我希望这会有所帮助。