我正在计算自由空间损失并遇到麻烦。
进行此计算:
fslLoss = 36.6 + (20 * log(fromAntenna/5280)) + (20 * log(serviceFreq))
其中fslLoss是一个浮点数,而fromAntenna和servicefreq是整数:
NSLog(@"the freespace Loss is %0.01f", fslLoss);
结果是“自由空间损失是-inf”
问题似乎出现在20log(fromAntenna / 5280)部分,因为没有它我会得到正常的结果。
BTW ...尝试了log10,结果相同。
感谢您的帮助,
padapa
答案 0 :(得分:4)
你说fromAntenna
是一个整数,所以fromAntenna/5280
将用整数运算来计算。这意味着它将被舍入(技术上是平铺的),可能不是你想要的。
修复:
log( (double) fromAntenna / 5280.0 )
答案 1 :(得分:4)
log(0)
是-inf。对数内的整数除法可以为零。使用fromAntenna/5280.0
进行浮动划分。
答案 2 :(得分:2)
编译器正确使用fromAntenna& serviceFreq as ints,当fslLoss是一个浮点数时,它没有给你很好的结果。使用一些浮动演员,你会有更好的运气:
fslLoss = 36.6 + (20 * log((float)fromAntenna/5280)) + (20 * log((float)serviceFreq));