ToPackedArray() public method

Convert the matrix to a packed array.
public ToPackedArray ( ) : double[]
return double[]
        /// <summary>
        /// Compute the dot product for two matrixes.  Note: both matrixes must be vectors.
        /// </summary>
        /// <param name="a">The first matrix, must be a vector.</param>
        /// <param name="b">The second matrix, must be a vector.</param>
        /// <returns>The dot product of the two matrixes.</returns>
        public static double DotProduct(Matrix a, Matrix b)
        {
            if (!a.IsVector() || !b.IsVector())
            {
                throw new MatrixError(
                          "To take the dot product, both matrixes must be vectors.");
            }

            Double[] aArray = a.ToPackedArray();
            Double[] bArray = b.ToPackedArray();

            if (aArray.Length != bArray.Length)
            {
                throw new MatrixError(
                          "To take the dot product, both matrixes must be of the same length.");
            }

            double result = 0;
            int    length = aArray.Length;

            for (int i = 0; i < length; i++)
            {
                result += aArray[i] * bArray[i];
            }

            return(result);
        }
        /// <summary>
        /// Calculate the vector length of the matrix.
        /// </summary>
        /// <param name="input">The vector to calculate for.</param>
        /// <returns>The vector length.</returns>
        public static double VectorLength(Matrix input)
        {
            if (!input.IsVector())
            {
                throw new MatrixError(
                          "Can only take the vector length of a vector.");
            }
            Double[] v   = input.ToPackedArray();
            double   rtn = 0.0;

            for (int i = 0; i < v.Length; i++)
            {
                rtn += Math.Pow(v[i], 2);
            }
            return(Math.Sqrt(rtn));
        }
Beispiel #3
0
        public void Randomize()
        {
            const double min    = 1.0;
            const double max    = 10.0;
            var          matrix = new Matrix(10, 10);

            matrix.Ramdomize(min, max);
            var array = matrix.ToPackedArray();

            foreach (double t in array)
            {
                if (t < min || t > max)
                {
                    Assert.IsFalse(true);
                }
            }
        }
Beispiel #4
0
        public void PackedArray()
        {
            double[][] matrixData =
            {
                new[] { 1.0, 2.0 },
                new[] { 3.0, 4.0 }
            };
            var matrix = new Matrix(matrixData);

            double[] matrixData2 = matrix.ToPackedArray();
            Assert.AreEqual(4, matrixData2.Length);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(2.0, matrix[0, 1]);
            Assert.AreEqual(3.0, matrix[1, 0]);
            Assert.AreEqual(4.0, matrix[1, 1]);

            var matrix2 = new Matrix(2, 2);

            matrix2.FromPackedArray(matrixData2, 0);
            Assert.IsTrue(matrix.Equals(matrix2));
        }
 public void Randomize()
 {
     const double min = 1.0;
     const double max = 10.0;
     var matrix = new Matrix(10, 10);
     matrix.Ramdomize(min, max);
     var array = matrix.ToPackedArray();
     foreach (double t in array)
     {
         if (t < min || t > max)
             Assert.IsFalse(true);
     }
 }
        public void PackedArray()
        {
            double[][] matrixData = {
                                        new[] {1.0, 2.0},
                                        new[] {3.0, 4.0}
                                    };
            var matrix = new Matrix(matrixData);
            double[] matrixData2 = matrix.ToPackedArray();
            Assert.AreEqual(4, matrixData2.Length);
            Assert.AreEqual(1.0, matrix[0, 0]);
            Assert.AreEqual(2.0, matrix[0, 1]);
            Assert.AreEqual(3.0, matrix[1, 0]);
            Assert.AreEqual(4.0, matrix[1, 1]);

            var matrix2 = new Matrix(2, 2);
            matrix2.FromPackedArray(matrixData2, 0);
            Assert.IsTrue(matrix.Equals(matrix2));
        }
Beispiel #7
0
 /// <summary>
 /// Calculate the vector length of the matrix.
 /// </summary>
 /// <param name="input">The vector to calculate for.</param>
 /// <returns>The vector length.</returns>
 public static double VectorLength(Matrix input)
 {
     if (!input.IsVector())
     {
         throw new MatrixError(
             "Can only take the vector length of a vector.");
     }
     Double[] v = input.ToPackedArray();
     double rtn = 0.0;
     for (int i = 0; i < v.Length; i++)
     {
         rtn += Math.Pow(v[i], 2);
     }
     return Math.Sqrt(rtn);
 }
Beispiel #8
0
        /// <summary>
        /// Compute the dot product for two matrixes.  Note: both matrixes must be vectors.
        /// </summary>
        /// <param name="a">The first matrix, must be a vector.</param>
        /// <param name="b">The second matrix, must be a vector.</param>
        /// <returns>The dot product of the two matrixes.</returns>
        public static double DotProduct(Matrix a, Matrix b)
        {
            if (!a.IsVector() || !b.IsVector())
            {
                throw new MatrixError(
                    "To take the dot product, both matrixes must be vectors.");
            }

            Double[] aArray = a.ToPackedArray();
            Double[] bArray = b.ToPackedArray();

            if (aArray.Length != bArray.Length)
            {
                throw new MatrixError(
                    "To take the dot product, both matrixes must be of the same length.");
            }

            double result = 0;
            int length = aArray.Length;

            for (int i = 0; i < length; i++)
            {
                result += aArray[i]*bArray[i];
            }

            return result;
        }