LogMath

public final class LogMath implements Configurable, Serializable



log(a - b) = log(a) + log(1 - exp(log(b)-log(a)))

log(a + b) = log(a) +log(1 + exp(log(b)- log(a)))

作用:首先本类是一个component即可配置类。本类主要的作用是:提供在LOG(对数)域的进行操作的方法。以及把线性域如k=xy变成logk=logxy 的方法(即线性域到log域),以及

把log域变成线性域的方法如:logk=logxy 变成k=xy。本类只是提供了数学上的方法,使得线性域的乘除法变的容易,同时是计算变的简单。

本类的主要属性:

@S4Double(defaultValue = 1.0001)

String PROP_LOG_BASE = “logBase”;用来进行默认设置。

@S4Boolean(defaultValue = true)

String PROP_USE_ADD_TABLE = “useAddTable”;用来对useAddTable进行默认设置。

  private float logBase;  property配置属性即是我们想要的对数的底。

   private boolean useAddTable;property配置属性。一般为false。

以及一些短时存在的属性:如Logger logger,

本类的构造方法:

本类有两个构造方法:1,public LogMath():空的构造方法,什么也不做,通过ps来进行属性的配置。

2,LogMath(float logBase, boolean useAddTable):本构造方法通过输入配置属性来进行初始化,是一种硬编码的形式。其中调用了init()方法。

本类的方法

init():本方法:设置了短时属性naturalLogBase,inverseNaturalLogBase,maxLogValue,minLogValue,logger。当useAddTable为真时,还创建了一个theAddTable[index],theAddTable中的存储形式为log( 1.0 + power(base, index)),entriesInTheAddTable用于确定theAddTable的长度。entriesInTheAddTable = (int) -Math.rint(linearToLog(logToLinear(0.5f) - 1));

1,  float linearToLog(double linearValue):本方法的返回为,如果返回超过浮点数的范围则取相应的浮点数的最大值或最小值。如输入参数为0则返回-Float.MAX_VALUE。

2,  double logToLinear(float logValue):本法返回的是,如果输入超过相应的范围则返回对应的最值。

3,  logToLn(float logSource):本法返回为:,如果输入参数超过范围,则取其相应的最值输出。

4,  getLogZero():返会为logZero = -Float.MAX_VALUE为浮点数范围的最小值

5,  getLogOne():返回logOne

6,     getLogBase():返回LogBase即log的底。Loglogbase

7, isUseAddTable():返回UseAddTable

8, log10(float value):本方法返回:即为(float) (0.4342944819 * Java.lang.Math.log(value))。

9, linearToLog(float[] vector):把矢量数组中的每一个都转成的形式后放入输入数组(即原数组中)中输出。

10,             logToLinear(float[] vector, float[] out):把vector中的每个值转换为形式,然后放入out数组中。

11,             logToLog(float logSource, float sourceBase float resultBase):本方法返回为,如果logSource为logzero则返回logzero。即把以sourceBase为底的对数转换为以resultBase为底的对数。如果logSource= 则 返回为

12,             log10ToLog(float logSource):返回为。即把以10为底的对数,转换为以logbase为底的对数。

13,             lnToLog(float logSource):本方法返回的是当logsource=lnx 即返回的为 。

14,             subtractAsLinear(float logMinuend, float logSubtrahend):因为:log(a - b) = log(a) + log(1 - exp(log(b)-log(a)))如果logMinuend= log(a),logSubtrahend= log(b),那么本方法返回的是log(a - b)。

addTable(float index):因为:log(a + b)= log(a) +log(1 + exp(log(b) - log(a))),根据useAddTable的情况来定,如果useAddTable为真则返回的是

int    intIndex = (int) (index + 0.5);

                       if (0 <= intIndex){

                if (intIndex < theAddTable.length) {

                    return theAddTable[intIndex];

                } else {

                    return 0.0f;}

否则返回的是addTableActualComputation(index)

15,             addTableActualComputation(float index):因为log(a + b) = log(a) +log(1 + exp(log(b) - log(a))),本方法返回的是:log(1 + exp(0 - log(a))),其index= log(a)。

16,             addAsLinear(float logVal1, float logVal2):本方法在useAddTable为false的情况下返回为log(a + b),其中 logVal2=log(a),logVal1= logVal1.

17,             newProperties(PropertySheetps):用于对logmath重新配置。其中调用了init()方法。

转自:http://blog.csdn.net/taiyb/article/details/38391513

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值