2013-10-29 81 views
0

我正在使用MathsNet.Numerics库。我想在复向量,即我
using MathNet.Numerics.LinearAlgebra.Complex
这给了我VectorVectorMathNet.Numerics.LinearAlgebra.Generic.Vector<T>
Operatations为复杂版本S但不分配对象返回Vector做业务:MathNet.Numerics操作返回类型

Complex[] complexData = new Complex[n] 
... fill data, fft etc ... 
Vector vectorReference = new DenseVector(complexData); 
vectorReference = vectorReference.Conjugate(); // Error. 

错误CS0266:无法隐式转换类型 'MathNet.Numerics.LinearAlgebra.Generic.Vector<System.Numerics.Complex>' 到'MathNet.Numerics.LinearAlgebra.Complex.Vector'

为什么在Vector s上运行的方法的返回值(例如, ConjugatePointwiseMultiply)不可分配给Vector s?

+0

任何原因你还原我的编辑,改善拼写和格式? – Stijn

+0

对不起Stijn - 我们做了一个快速编辑,我失去了一个变化 - 随时可以重新申请。 – Ricibob

+0

没问题,有时同时编辑无法正确合并。 – Stijn

回答

1

类型层次:Vector<T> <- Complex.Vector <- Complex.DenseVector

.NET不支持重载的方法时,专门返回类型(方差),所以我们在技术上不能修改Conjugate在派生类返回Complex.Vector甚至Complex.DenseVector

一般而言,我们建议期望在字段和方法参数中使用泛型类型(即Vector<Complex>) - 或者当您打算重用变量时。在Math.NET Numerics v3中,这已经被精简了,所以几乎从不需要使用实际的实现类型。