3

我正在计算可用空间损失并遇到障碍。

做这个计算:

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) 部分,因为没有它我得到正常结果。

顺便说一句...尝试 log10 得到相同的结果。

谢谢您的帮助,

帕帕帕

4

3 回答 3

4

你说fromAntenna的是整数,所以fromAntenna/5280会用整数算术来计算。这意味着它将是四舍五入的(从技术上讲,地板),可能不是您想要的。

修复它:

log( (double) fromAntenna / 5280.0 )
于 2013-05-02T01:43:15.787 回答
4

log(0)是-inf。对数内的整数除法可能为零。用于fromAntenna/5280.0获得浮点除法。

于 2013-05-02T01:44:03.980 回答
2

编译器正确使用 fromAntenna 和 serviceFreq 作为整数,当 fslLoss 是浮点数时,这不会给你带来好的结果。使用一些浮动演员,你会有更好的运气:

 fslLoss = 36.6 + (20 * log((float)fromAntenna/5280)) + (20 * log((float)serviceFreq));
于 2013-05-02T01:44:17.527 回答