1

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

4

1 回答 1

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);
于 2013-10-03T11:19:48.067 回答