2015-10-07 124 views
1

我正在使用apache commons-math库来计算回归参数。如图2和图3所示,将2d阵列分配给单个阵列。当我使用相同的代码,2D数组如何分配给1D数组?

我得到错误:

"Type mismatch error:cannot convert from double [][] to double []" in 3rd line but not for 2nd line.

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); 

为什么发生这种情况?以及这是如何工作的?

More details on OLS regression are given here

+3

请不要在下次发布代码图片时。 – Maroun

+0

谢谢。我会记住这一点。 – Ranjeet

回答

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 

看到插入以后你想要一个二维数组后。要成功编译以下代码,您需要将排版更改为

double[][] x = new double[6][]; 
+0

我没有写这段代码,我只是从apache commons-math库网站复制而来。我猜,他们不能给出错误的信息。必须有一些解释。 – Ranjeet

+0

这不是一个IDE来编译和给出错误。在一个简单的网页后。一定有一些错字。 –