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))); }
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, }); }
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))); }
public DenseMatrix(int rows, int columns, double value) : this(DenseColumnMajorMatrixStorage <double> .OfInit(rows, columns, (i, j) => value)) { }
/// <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)) { }