* 返された配列のサイズを行列の大きさとして使わないこと!\r
* \r
*/\r
- private double[][] m;\r
+ protected double[][] m;\r
private int clm,row;\r
+ /**\r
+ * デフォルトコンストラクタは機能しません。\r
+ * @throws NyARException\r
+ */\r
+ protected NyARMat() throws NyARException\r
+ {\r
+ throw new NyARException();\r
+ }\r
public NyARMat(int i_row,int i_clm)\r
{\r
m=new double[i_row][i_clm];\r
}\r
}\r
}\r
+ /**\r
+ * i_copy_fromの内容を自分自身にコピーします。\r
+ * 高さ・幅は同一で無いと失敗します。\r
+ * @param i_copy_from\r
+ */\r
+ public void copyFrom(NyARMat i_copy_from)throws NyARException\r
+ {\r
+ //サイズ確認\r
+ if(this.row!=i_copy_from.row ||this.clm!=i_copy_from.clm)\r
+ {\r
+ throw new NyARException();\r
+ }\r
+ //値コピー\r
+ for(int r=this.row-1;r>=0;r--){\r
+ for(int c=this.clm-1;c>=0;c--){\r
+ this.m[r][c]=i_copy_from.m[r][c];\r
+ }\r
+ }\r
+ }\r
\r
public double[][] getArray()\r
{\r
}\r
}\r
private int[] wk_nos_matrixSelfInv=new int[50];\r
- private final static double matrixSelfInv_epsl=1.0e-10;\r
+// private final static double matrixSelfInv_epsl=1.0e-10;\r
/**\r
* i_targetを逆行列に変換する。arMatrixSelfInv()と、arMatrixSelfInv_minv()関数を合成してあります。\r
* OPTIMIZE STEP[485->422]\r
* @param i_target\r
* 逆行列にする行列\r
+ * @return\r
+ * 逆行列があればTRUE/無ければFALSE\r
+ * \r
* @throws NyARException\r
*/\r
- public void matrixSelfInv() throws NyARException\r
+ public boolean matrixSelfInv() throws NyARException\r
{\r
double[][] ap=this.m;\r
int dimen=this.row;\r
throw new NyARException();\r
case 1:\r
ap[0][0]=1.0/ap[0][0];//*ap = 1.0 / (*ap);\r
- return;/* 1 dimension */\r
+ return true;/* 1 dimension */\r
}\r
\r
for(int n = 0; n < dimen ; n++){\r
ip = i;\r
}\r
}\r
- if (p <= matrixSelfInv_epsl){\r
- return;\r
+// if (p <= matrixSelfInv_epsl){\r
+ if(p==0.0){\r
+ return false;\r
+// throw new NyARException();\r
}\r
\r
nwork = nos[ip];\r
ap_i[n]=work;//*wbp = work;\r
}\r
}\r
- return;\r
+ return true;\r
}\r
/**\r
* sourceの転置行列をdestに得る。arMatrixTrans()の代替品\r