Как создать элемент Accord.Math.Sparse <double>в C #? - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь реализовать в C # точечный продукт, для этого я использую Accord.Math и его метод Dot следующим образом:

using Accord.Math;

namespace VectorOperations
{
    class DotProduct
    {
        private static double CalculateDotProduct(Sparse<double> Vector1, Sparse<double> Vector2)
        {
            double DotProduct = Vector.Dot(Vector1, Vector2);
            return DotProduct;
        }
    }
}

Однако я не могу создать пример, гдеЯ могу проверить, работает ли он правильно, потому что я не знаю, как создать переменную типа Sparse<double>.Как я могу создать один в качестве примера?В идеале я хотел бы иметь:

Sparse<double> Vector1 = new Sparse<double>();
Sparse<double> Vector2 = new Sparse<double>();

// Vector1 = [1, 2, 3];
// Vector2 = [1, 2, 3];

Так что я могу позвонить this.CalculateDotProduct(Vector1, Vector2) и проверить, работает ли он правильно.

Если вам известен какой-либо другой метод вычисления точечного продукта с векторами типа List<double>, то тоже приветствуются.

1 Ответ

0 голосов
/ 05 декабря 2018

В модульных тестах показано несколько способов создания и заполнения экземпляра:

var s = new Sparse<double>();
s[0] = 1;
s[99] = 99;
s[10] = 42;

v = new double[] { 1, 2, 3, 0, 0, 6 };
d = Sparse.FromDense(v);

Другой способ - использование конструктора Sparse(int[] indices, T[] values):

Sparse<double> Vector1 = new Sparse<double>(new[] { 0, 1, 2 }, new[]  { 1, 2, 3 });
...