Пример #1
0
        /* 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;
        }
Пример #2
0
        /* 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;
        }