如何在C#中乘以DiffSharp的DM和DV?
我有以下代码:如何在C#中乘以DiffSharp的DM和DV?,c#,diffsharp,C#,Diffsharp,我有以下代码: using DiffSharp.Interop.Float64; public class Layer { public DM W { get; set; } public DV b { get; set; } public Func<DV,DV> a { get; set; } public DV Compute(DV v) { return a(W * v); /
using DiffSharp.Interop.Float64;
public class Layer
{
public DM W { get; set; }
public DV b { get; set; }
public Func<DV,DV> a { get; set; }
public DV Compute(DV v)
{
return a(W * v); // This Line
}
}
使用DiffSharp.Interop.Float64;
公共类层
{
公共DM W{get;set;}
公共dvb{get;set;}
公共函数a{get;set;}
公共DV计算(DV v)
{
返回a(W*v);//此行
}
}
问题是语句
W*v
,它说“运算符*不能应用于DM和DV类型的操作数”
。在F#中,它们以这种方式相乘。如何在C#中将这个矩阵和向量相乘?不确定向量在f#中是如何实现的,但在C#中,您需要加载System.Windows.vector程序集。您可以检查:查看源代码:注意,它定义了许多多应用运算符,但没有一个是DM*DV
。也许库的作者无意中从互操作库中遗漏了您想要的运算符?DM
和DV
是两种不同的类型。你的Compute
方法要么需要做一些特殊的事情,要么调用DV
的特殊方法(在DM
中做一些事情,不管它在做什么)。@EricLippert你完全正确。DV*DV存在。DM*DM存在,但DM*DV不存在。非常感谢你。我想我应该提出一个问题?不确定向量在f#中是如何实现的,但在c#中,您需要加载System.Windows.vector程序集。您可以检查:查看源代码:注意它定义了许多多应用运算符,但没有一个是DM*DV
。也许库的作者无意中从互操作库中遗漏了您想要的运算符?DM
和DV
是两种不同的类型。你的Compute
方法要么需要做一些特殊的事情,要么调用DV
的特殊方法(在DM
中做一些事情,不管它在做什么)。@EricLippert你完全正确。DV*DV存在。DM*DM存在,但DM*DV不存在。非常感谢你。我想我应该提出一个问题?