public void Knn_RandomTest()
        {
            Matrix <float> queryMatrix = DenseMatrix.CreateRandom(3, 100, new ContinuousUniform(-10, 10));
            DenseColumnMajorMatrixStorage <float> query = (DenseColumnMajorMatrixStorage <float>)queryMatrix.Storage;
            Matrix <float> points   = DenseMatrix.CreateRandom(3, 100, new ContinuousUniform(-10, 10));
            Vector <float> maxRadii = DenseVector.Create(100, i => float.PositiveInfinity);


            var search  = new KdTreeNearestNeighborSearch((DenseColumnMajorMatrixStorage <float>)points.Storage);
            var results = DenseColumnMajorMatrixStorage <int> .OfInit(1, 100, (i, j) => 0);

            var resultDistances = DenseColumnMajorMatrixStorage <float> .OfInit(1, 100, (i, j) => 0);

            search.knn(query, results, resultDistances, maxRadii, k: 1, epsilon: float.Epsilon, optionFlags: SearchOptionFlags.AllowSelfMatch);

            var bruteForceSearch = new BruteForceNearestNeighbor(points);
            var results2         = DenseColumnMajorMatrixStorage <int> .OfInit(1, 100, (i, j) => 0);

            var resultDistances2 = DenseColumnMajorMatrixStorage <float> .OfInit(1, 100, (i, j) => 0);

            search.knn(query, results2, resultDistances2, maxRadii, k: 1, epsilon: float.Epsilon, optionFlags: SearchOptionFlags.AllowSelfMatch);

            for (int i = 0; i < results.ColumnCount; i++)
            {
                for (int j = 0; j < results.RowCount; j++)
                {
                    Assert.AreEqual(results2.At(j, i), results.At(j, i));
                }
            }
        }
 /// <summary>
 /// Create a new dense matrix and initialize each value to the same provided value.
 /// </summary>
 public static DenseMatrix Create(int rows, int columns, double value)
 {
     if (value == 0d)
     {
         return(new DenseMatrix(rows, columns));
     }
     return(new DenseMatrix(DenseColumnMajorMatrixStorage <double> .OfInit(rows, columns, (i, j) => value)));
 }
 /// <summary>
 /// Create a new dense matrix and initialize each value to the same provided value.
 /// </summary>
 public static DenseMatrix Create(int rows, int columns, Complex32 value)
 {
     if (value == Complex32.Zero)
     {
         return(new DenseMatrix(rows, columns));
     }
     return(new DenseMatrix(DenseColumnMajorMatrixStorage <Complex32> .OfInit(rows, columns, (i, j) => value)));
 }
Exemple #4
0
            public Matches FindClosests(DataPoints filteredReading)
            {
                int n       = this.reference.points.Length;
                var indexes = DenseColumnMajorMatrixStorage <int> .OfInit(1, n, (i, j) => j);

                var distances = DenseColumnMajorMatrixStorage <float> .OfInit(
                    1,
                    n,
                    (i, j) => (filteredReading.points[j].point - this.reference.points[j].point).LengthSquared());

                return(new Matches
                {
                    Dists = distances,
                    Ids = indexes,
                });
            }
Exemple #5
0
            public Matches FindClosests(DataPoints filteredReading)
            {
                int n       = filteredReading.points.Length;
                var results = DenseColumnMajorMatrixStorage <int> .OfInit(1, n, (i, j) => 0);

                var resultDistances = DenseColumnMajorMatrixStorage <float> .OfInit(1, n, (i, j) => 0);

                Vector <float> maxRadii = DenseVector.Create(n, i => this.maxDist);

                var query = CreateCloudMatrix(filteredReading);

                kdtree.knn(query, results, resultDistances, maxRadii, this.knn, this.epsilon, SearchOptionFlags.AllowSelfMatch);
                return(new Matches
                {
                    Ids = results,
                    Dists = resultDistances
                });
            }
 public DenseMatrix(int rows, int columns, Complex value)
     : this(DenseColumnMajorMatrixStorage <Complex> .OfInit(rows, columns, (i, j) => value))
 {
 }
 /// <summary>
 /// Create a new dense matrix with values sampled from the provided random distribution.
 /// </summary>
 public static DenseMatrix CreateRandom(int rows, int columns, IContinuousDistribution distribution)
 {
     return(new DenseMatrix(DenseColumnMajorMatrixStorage <Complex> .OfInit(rows, columns,
                                                                            (i, j) => new Complex(distribution.Sample(), distribution.Sample()))));
 }
 /// <summary>
 /// Create a new dense matrix and initialize each value using the provided init function.
 /// </summary>
 public static DenseMatrix Create(int rows, int columns, Func <int, int, Complex> init)
 {
     return(new DenseMatrix(DenseColumnMajorMatrixStorage <Complex> .OfInit(rows, columns, init)));
 }
 /// <summary>
 ///     Create a new dense matrix and initialize each value using the provided init function.
 /// </summary>
 public Matrix <T> Dense(int rows, int columns, Func <int, int, T> init)
 {
     return(Dense(DenseColumnMajorMatrixStorage <T> .OfInit(rows, columns, init)));
 }
Exemple #10
0
 public DenseMatrix(int rows, int columns, double value)
     : this(DenseColumnMajorMatrixStorage <double> .OfInit(rows, columns, (i, j) => value))
 {
 }
Exemple #11
0
 /// <summary>
 /// Create a new dense matrix and initialize each value using the provided init function.
 /// </summary>
 public static DenseMatrix Create(int rows, int columns, Func<int, int, double> init)
 {
     return new DenseMatrix(DenseColumnMajorMatrixStorage<double>.OfInit(rows, columns, init));
 }
 public DenseMatrix(int rows, int columns, float value)
     : this(DenseColumnMajorMatrixStorage <float> .OfInit(rows, columns, (i, j) => value))
 {
 }