如何将新元素添加到DenseVector中

时间:2013-10-03 10:39:05

标签: vector mathdotnet

我需要在现有的DenseVector中添加一个新元素(double值)。我找到了一些解决方法,但是,在Math.NET中如何做到这一点的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

目前没有“预期”的方式来做到这一点。 Matrix类型确实具有InsertRow / InsertColumn方法,并且还需要为Vector类型添加Insert方法。我刚刚开了一张新票#159来跟踪它。

与此同时,你可以使用以下例程(我在这里使用v3.0.0-alpha5):

Vector<T> InsertAt<T>(Vector<T> v, int i, T value) where T : struct, IEquatable<T>, IFormattable
{
    var res = Vector<T>.Build.Dense(v.Count+1);
    if (i > 0) v.Storage.CopySubVectorTo(res.Storage, 0, 0, i, true);
    if (i < v.Count) v.Storage.CopySubVectorTo(res.Storage, i, i+1, v.Count-i, true);
    res.At(i, value);
    return res;
}

var v = Vector<double>.Build.Dense(5, i => i);
var vx = InsertAt(v, 5, 100);