2015-10-07 44 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來編譯和給出錯誤。在一個簡單的網頁後。一定有一些錯字。 –