将C#Func <>移植到Java- Math Equation
作者:互联网
我正在将C#库移植到Java(用于非线性回归,原始代码here).该库使用Func<>.类,在Java中不存在.即(A,B,C和D,以及时间是用于回归的参数,不需要固定.)
Func<double>[] regressionFunctions = new Func<double>[]
{() => A * Math.Exp(time) * Math.Sin(B * time),
() => C * Math.Exp(time) * Math.Cos(D * time)};
我想做的就是将其转换为Java代码.我看到了有关创建匿名内部类的内容,但是我不确定这种特殊情况的正确用法.我希望等式可以在以后的时间(对于t的特定值)求值.我需要一个新的类,一个接口,还是最好的方法是什么?
任何帮助,将不胜感激!提前致谢.
解决方法:
您可以定义自己的接口,并使用匿名实现来移植代码:
// Declaring the interface
interface FuncDouble {
double calculate();
}
public LevenbergMarquardt(FuncDouble[] regressionFunctions, ...) {
// Using the functor:
double functionValue = _regressionFunctions[i].calculate()
}
// Declaring an array of functors:
FuncDouble[] regressionFunctions = new FuncDouble[] {
new FuncDouble() {
public double calculate() {
return A * Math.Exp(time) * Math.Sin(B * time);
}
}
, new FuncDouble() {
public double calculate() {
return C * Math.Exp(time) * Math.Cos(D * time);
}
}
};
为了使实现起作用,A,B,C,D和时间变量必须是实例/类变量,或者是最终的局部变量.
标签:java,c,porting 来源: https://codeday.me/bug/20191101/1981726.html