/// <summary> /// Create distance matrix from <see cref="IDistance"/>. /// </summary> /// <param name="data"></param> /// <param name="distance"></param> public GenericDistanceMatrix(MatrixIndexer data, IDistance distance) { N = data.RowCount; _distances = new double[N * (N - 1) / 2]; int k = 0; for (int i = 0; i < N; i++) { var xi = data.GetRow(i); for (int j = i+1; j < N; j++) { _distances[k++] = distance.Get(xi, data.GetRow(j)); } } }
private static BaseVector GetVector(MatrixIndexer data, int index, MatrixAccess access) { return access == MatrixAccess.Rows ? data.GetRow(index) : data.GetColumn(index); }