0

我有两个 TableFunctions f1: arguments1 -> values1 和 f2: arguments2 -> values2 通过它们的 arguments[] 和 values[] 数组给出。我想将它们链接到一个新的 TableFunction g,以便: g 的参数应为:arguments1 + 0.5 * arguments2 g 的值应为:min{values1, values2}。

有没有办法通过代码实现它?我试图这样做,但是,我总是遇到一个问题,即在形成笛卡尔积时,会出现重复。

4

1 回答 1

0

试试这个,假设你有 2 个大小相同的表函数,分别称为 t2 和 t4,并且你的新表函数是 newT:

您可以在模拟启动时执行此操作(请注意,如果超出范围,我会任意选择线性插值到最接近的值)

double [] values = new double[t2.getValues().length];
double [] arguments = new double[t2.getValues().length];

for(int i = 0; i<values.length;i++){
    arguments[i]=t2.getArguments()[i]+0.5*t4.getArguments()[i];
    values[i]=min(t2.getValues()[i],t4.getValues()[i]);
}
newT=new TableFunction( arguments, values, 
       TableFunction.INTERPOLATION_LINEAR, 1, TableFunction.OUTOFRANGE_NEAREST,
       0.0 );
于 2022-03-04T14:29:52.497 回答