Пример #1
0
        /**
         * Converts {@link DMatrix5} into {@link DMatrixRMaj}.
         *
         * @param input Input matrix.
         * @param output Output matrix.  If null a new matrix will be declared.
         * @return Converted matrix.
         */
        public static DMatrixRMaj convert(DMatrix5 input, DMatrixRMaj output)
        {
            if (output == null)
            {
                output = new DMatrixRMaj(5, 1);
            }

            if (output.getNumRows() != 1 && output.getNumCols() != 1)
            {
                throw new ArgumentException("One row or column must have a length of 1 for it to be a vector");
            }
            int length = Math.Max(output.getNumRows(), output.getNumCols());

            if (length != 5)
            {
                throw new ArgumentException("Length of input vector is not 5.  It is " + length);
            }

            output.data[0] = input.a1;
            output.data[1] = input.a2;
            output.data[2] = input.a3;
            output.data[3] = input.a4;
            output.data[4] = input.a5;

            return(output);
        }
Пример #2
0
        /**
         * Converts {@link DMatrixRMaj} into {@link DMatrix5}
         *
         * @param input Input matrix.
         * @param output Output matrix.  If null a new matrix will be declared.
         * @return Converted matrix.
         */
        public static DMatrix5 convert(DMatrixRMaj input, DMatrix5 output)
        {
            if (output == null)
            {
                output = new DMatrix5();
            }

            if (input.getNumRows() != 1 && input.getNumCols() != 1)
            {
                throw new ArgumentException("One row or column must have a length of 1 for it to be a vector");
            }
            int length = Math.Max(input.getNumRows(), input.getNumCols());

            if (length != 5)
            {
                throw new ArgumentException("Length of input vector is not 5.  It is " + length);
            }

            output.a1 = input.data[0];
            output.a2 = input.data[1];
            output.a3 = input.data[2];
            output.a4 = input.data[3];
            output.a5 = input.data[4];

            return(output);
        }
Пример #3
0
        public static double normF(DMatrix5 M)
        {
            double scale = CommonOps_DDF5.elementMaxAbs(M);

            if (scale == 0.0)
            {
                return(0.0);
            }

            double a1 = M.a1 / scale, a2 = M.a2 / scale, a3 = M.a3 / scale, a4 = M.a4 / scale, a5 = M.a5 / scale;
            double sum = a1 * a1 + a2 * a2 + a3 * a3 + a4 * a4 + a5 * a5;

            return(scale * Math.Sqrt(sum));
        }
Пример #4
0
 public static bool hasUncountable(DMatrix5 a)
 {
     if (UtilEjml.isUncountable(a.a1))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a2))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a3))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a4))
     {
         return(true);
     }
     if (UtilEjml.isUncountable(a.a5))
     {
         return(true);
     }
     return(false);
 }
Пример #5
0
 public static bool isIdentical(DMatrix5 a, DMatrix5 b, double tol)
 {
     if (!MatrixFeatures_DDRM.isIdentical(a.a1, b.a1, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_DDRM.isIdentical(a.a2, b.a2, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_DDRM.isIdentical(a.a3, b.a3, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_DDRM.isIdentical(a.a4, b.a4, tol))
     {
         return(false);
     }
     if (!MatrixFeatures_DDRM.isIdentical(a.a5, b.a5, tol))
     {
         return(false);
     }
     return(true);
 }
Пример #6
0
        public static double fastNormF(DMatrix5 M)
        {
            double sum = M.a1 * M.a1 + M.a2 * M.a2 + M.a3 * M.a3 + M.a4 * M.a4 + M.a5 * M.a5;

            return(Math.Sqrt(sum));
        }
Пример #7
0
        public static void normalizeF(DMatrix5 M)
        {
            double val = normF(M);

            CommonOps_DDF5.divide(M, val);
        }