我已经下达了使用MATLAB Builder将MATLAB函数转换为Java类的任务,现在我已经将一个类的结果馈送到另一个类中了,因为MATLAB构建器只会输出一个对象,我遇到了问题。
import java.util.*;
import com.mathworks.toolbox.javabuilder.*;
public class mainKrigTau {
public static void main(String[] args) {
Object[] resultT = null;
Object[] resultK = null;
Object[] resultB = null;
krigingTau Tau = null;
krigingTau Krig = null;
Branin branin = null;
try {
Tau = new krigingTau();
Krig = new krigingTau();
branin = new Branin();
resultT = Tau.LPtau(1, 100, 2, 1234);
List<Object> X = Arrays.asList(resultT[0]);
System.out.println(X);
System.out.println((X.size()));
} catch (MWException e)
{
e.printStackTrace();
} finally
{
}
因此,基本上Tau类的输出是2D数组,因此该数组嵌入到resultT []对象中,如何访问此数组?我尝试过的一种方法如上所述,将其更改为数组列表,X输出数组,但是我无法访问数组的组件。X.size = 1,而不是100,这是数组的实际大小。编辑-仅添加,我可以找到的所有示例仅输出结果对象并显示它,而不是对其进行任何处理。
好的,附近的软件工程师来了。这有点a回,但可以。
try {
Tau = new krigingTau();
Krig = new krigingTau();
branin = new Branin();
resultT = Tau.LPtau(1, 100, 2, 1234);
List<Object> X = Arrays.asList(resultT[0]);
if (X.get(0) instanceof MWNumericArray) {
MWNumericArray mw= (MWNumericArray) X.get(0);
ArrayList<Point> lists = new ArrayList<Point>();
for(int i = 1; i <= mw.numberOfElements()/2; i++){
Object o = mw.get(i);
System.out.println(o);
Double x = (Double) mw.get(i);
Double y = (Double) mw.get((mw.numberOfElements()/2)+i);
Point p = new Point(x.doubleValue(),y.doubleValue());
lists.add(p);
}
for(int i = 1; i < mw.numberOfElements()/2; i++)
{
resultB = branin.branin(1, lists.get(i).array);
System.out.println(resultB[0]);
}
其中point将x和y的值设置为数组,因此将其设置为新的MWNumericArray并执行Object.get(i),但这会使数组变平,这是不理想的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句