我正在使用apache commons-math库来计算回归参数。如图2和3所示,将2d阵列分配给单个阵列。当我使用相同的代码时,
我收到错误:
“类型不匹配错误:无法从double [] []转换为double []”in 第3行但不是第2行。
OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
double[] x = new double[6][];
x[0] = new double[]{0, 0, 0, 0, 0};
x[1] = new double[]{2.0, 0, 0, 0, 0};
x[2] = new double[]{0, 3.0, 0, 0, 0};
x[3] = new double[]{0, 0, 4.0, 0, 0};
x[4] = new double[]{0, 0, 0, 5.0, 0};
x[5] = new double[]{0, 0, 0, 0, 6.0};
regression.newSample(y, x);
为什么会这样?以及它是如何工作的?
答案 0 :(得分:1)
案例1:
double[] y = new double[]{11.0, 12.0, 13.0, 14.0, 15.0, 16.0};
您正在创建一维数组,其值立即插入。工作正常
案例2:
double[] x = new double[6][];
您正在声明一维数组并尝试分配二维数组。这是非法的。
将声明更改为2D或使用1D初始化
有效声明将是
double[] x = new double[6]; // 1D
或
double[][] x = new double[6][lenghtYouWant]; //2D
稍后看到插入后,您需要一个2D数组。要成功编译以下代码,您需要将注册更改为
double[][] x = new double[6][];