【发布时间】:2018-12-05 14:56:06
【问题描述】:
我正在尝试在 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> 类型的向量计算点积的任何其他方法,也欢迎。
【问题讨论】:
-
.NET 中没有
Sparse[T]类。可能在功能上相似的东西是Lazy[T]用于延迟初始化。new Sparse<double>()似乎不完整,因为没有附加代码来处理调用时如何初始化值。 -
Sparse[T]是 Accord 库中使用的一种数据类型。 -
一个稀疏向量,每个值需要三个点:1) X 2) Y 3) 值。稀疏矩阵不会保存每个 x 和 y 值。因此,您可以使用任何具有这三个值的对象,例如创建您自己的具有 x、y 和 value 属性的类的元组。
-
@Marisa:我仍然不清楚那个类是做什么的。我最好的猜测是“惰性初始化阵列”?每个值都被延迟初始化的数组。
-
您是否收到错误消息?它不编译吗?请澄清“它不起作用”的原因。
标签: c# sparse-matrix accord.net dot-product