/* int arMatrixPCA2( ARMat *input, ARMat *evec, ARVec *ev ); */ public static void arMatrixPCA2(NyARMat input, NyARMat evec, NyARVec ev) { NyARException.trap("未チェックのパス"); NyARMat work; // double srow; // unreferenced double sum; int row, clm; int check; row = input.row; // row = input->row; clm = input.clm; // clm = input->clm; check = (row < clm) ? row : clm; if (row < 2 || clm < 2) { throw new NyARException(); } if (evec.getClm() != input.clm || evec.row != check) {// if( evec->clm!= input->clm|| evec->row!= check ){ throw new NyARException(); } if (ev.getClm() != check) {// if( ev->clm != check ){ throw new NyARException(); } NyARException.trap("未チェックのパス"); work = input.matrixAllocDup(); NyARException.trap("未チェックパス"); work.PCA_PCA(evec, ev);// rval = PCA( work, evec, ev ); sum = 0.0; double[] ev_array = ev.getArray(); for (int i = 0; i < ev.getClm(); i++) {// for( i = 0; i < ev->clm; i++ // ){ NyARException.trap("未チェックパス"); sum += ev_array[i];// sum += ev->v[i]; } for (int i = 0; i < ev.getClm(); i++) { // for(int i = 0; i < ev->clm;i++ ){ NyARException.trap("未チェックパス"); ev_array[i] /= sum; // ev->v[i] /= sum; } return; }
/* int arMatrixPCA2( ARMat *input, ARMat *evec, ARVec *ev ); */ public static void arMatrixPCA2(NyARMat input, NyARMat evec, NyARVec ev) { NyARException.trap("未チェックのパス"); NyARMat work; // double srow; // unreferenced double sum; int row, clm; int check; row = input.row;// row = input->row; clm = input.clm;// clm = input->clm; check = (row < clm) ? row : clm; if (row < 2 || clm < 2) { throw new NyARException(); } if (evec.getClm() != input.clm || evec.row != check) {// if( evec->clm!= input->clm|| evec->row!= check ){ throw new NyARException(); } if (ev.getClm() != check) {// if( ev->clm != check ){ throw new NyARException(); } NyARException.trap("未チェックのパス"); work = input.matrixAllocDup(); NyARException.trap("未チェックパス"); work.PCA_PCA(evec, ev);// rval = PCA( work, evec, ev ); sum = 0.0; double[] ev_array = ev.getArray(); for (int i = 0; i < ev.getClm(); i++) {// for( i = 0; i < ev->clm; i++ // ){ NyARException.trap("未チェックパス"); sum += ev_array[i];// sum += ev->v[i]; } for (int i = 0; i < ev.getClm(); i++) {// for(int i = 0; i < ev->clm;i++ ){ NyARException.trap("未チェックパス"); ev_array[i] /= sum;// ev->v[i] /= sum; } return; }