* @param dv\r
* @throws NyARException\r
*/\r
- private static void PCA_QRM(NyARDoubleMatrix22 o_matrix, NyARDoublePoint2d dv) throws NyARException\r
+ private static void PCA_QRM(NyARDoubleMatrix22 o_matrix, double[] dv) throws NyARException\r
{\r
double w, t, s, x, y, c;\r
double ev1;\r
o_matrix.m10 = mat10; \r
o_matrix.m11 = mat11;\r
}\r
- dv.x=dv_x;\r
- dv.y=dv_y;\r
+ dv[0]=dv_x;\r
+ dv[1]=dv_y;\r
return;\r
}\r
\r
* @param o_ev\r
* @throws NyARException\r
*/\r
- private void PCA_PCA(double[] i_x,double[] i_y,int i_number_of_data,NyARDoubleMatrix22 o_matrix, NyARDoublePoint2d o_ev,NyARDoublePoint2d o_mean) throws NyARException\r
+ private void PCA_PCA(double[] i_v1,double[] i_v2,int i_number_of_data,NyARDoubleMatrix22 o_matrix, double[] o_ev,double[] o_mean) throws NyARException\r
{\r
// double[] mean_array=mean.getArray();\r
// mean.zeroClear();\r
double sx = 0;\r
double sy = 0;\r
for (int i = 0; i < i_number_of_data; i++) {\r
- sx += i_x[i];\r
- sy += i_y[i];\r
+ sx += i_v1[i];\r
+ sy += i_v2[i];\r
}\r
sx = sx / i_number_of_data;\r
sy = sy / i_number_of_data;\r
double w00, w11, w10;\r
w00 = w11 = w10 = 0.0;// *out = 0.0;\r
for (int i = 0; i < i_number_of_data; i++) {\r
- final double x = (i_x[i] - sx) / srow;\r
- final double y = (i_y[i] - sy) / srow;\r
+ final double x = (i_v1[i] - sx) / srow;\r
+ final double y = (i_v2[i] - sy) / srow;\r
w00 += (x * x);// *out += *in1 * *in2;\r
w10 += (x * y);// *out += *in1 * *in2;\r
w11 += (y * y);// *out += *in1 * *in2;\r
//PCA_PCAの処理\r
PCA_QRM(o_matrix, o_ev);\r
// m2 = o_output.m;// m2 = output->m;\r
- if (o_ev.x < PCA_VZERO) {// if( ev->v[i] < VZERO ){\r
- o_ev.x = 0.0;// ev->v[i] = 0.0;\r
+ if (o_ev[0] < PCA_VZERO) {// if( ev->v[i] < VZERO ){\r
+ o_ev[0] = 0.0;// ev->v[i] = 0.0;\r
o_matrix.m00 = 0.0;// *(m2++) = 0.0;\r
o_matrix.m01 = 0.0;// *(m2++) = 0.0;\r
}\r
\r
- if (o_ev.y < PCA_VZERO) {// if( ev->v[i] < VZERO ){\r
- o_ev.y = 0.0;// ev->v[i] = 0.0;\r
+ if (o_ev[1] < PCA_VZERO) {// if( ev->v[i] < VZERO ){\r
+ o_ev[1] = 0.0;// ev->v[i] = 0.0;\r
o_matrix.m10 = 0.0;// *(m2++) = 0.0;\r
o_matrix.m11 = 0.0;// *(m2++) = 0.0;\r
}\r
- o_mean.x=sx;\r
- o_mean.y=sy;\r
+ o_mean[0]=sx;\r
+ o_mean[1]=sy;\r
// }\r
return;\r
}\r
- public void pca(double[] i_x,double[] i_y,int i_number_of_point,NyARDoubleMatrix22 o_evec, NyARDoublePoint2d o_ev,NyARDoublePoint2d o_mean) throws NyARException\r
+ public void pca(double[] i_v1,double[] i_v2,int i_number_of_point,NyARDoubleMatrix22 o_evec, double[] o_ev,double[] o_mean) throws NyARException\r
{\r
- PCA_PCA(i_x,i_y,i_number_of_point,o_evec, o_ev,o_mean);\r
+ PCA_PCA(i_v1,i_v2,i_number_of_point,o_evec, o_ev,o_mean);\r
\r
- final double sum = o_ev.x + o_ev.y;\r
+ final double sum = o_ev[0] + o_ev[1];\r
// For順変更禁止\r
- o_ev.x /= sum;// ev->v[i] /= sum;\r
- o_ev.y /= sum;// ev->v[i] /= sum;\r
+ o_ev[0] /= sum;// ev->v[i] /= sum;\r
+ o_ev[1] /= sum;// ev->v[i] /= sum;\r
return; \r
}\r
\r