簡體   English   中英

內置函數diff()可用於MathNet中的矢量?

[英]built-in function diff() available for vector in MathNet?

我是MathNet ,正在C#.Net實現代碼。

有一個向量:

var X = new DenseVector(new double[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150 });

我需要找到Y = **diff(X)**來計算X相鄰元素之間的差異,例如:

Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]

MathNet是否有內置函數diff() 我在MathNet.Numerics / Differentiate上搜索,但無法使用。

你是對的。 它似乎不可用。 但是這里有一個簡單的功能可以實現。

public MathNet.Numerics.LinearAlgebra.Double.DenseVector 
Diff(MathNet.Numerics.LinearAlgebra.Double.DenseVector X)
{
    var R = new MathNet.Numerics.LinearAlgebra.Double.DenseVector(X.Count - 2);
    for (var i = 0; i <= X.Count - 2; i++)
        R(i) = X(i + 1) - X(i);
    return R;
}

您可以利用MathNet優勢使其更具表現力。

static class VectorExtension
{
    public static Vector<double> Differentiate(this Vector<double> vector)
    {
        var high = Vector<double>.Build.DenseOfEnumerable(vector.Skip(1));
        var low = Vector<double>.Build.DenseOfEnumerable(vector.Take(vector.Count - 1));
        return  high - low;
    }
}

然后

var X = new DenseVector(new double[] { 10, 20, 30, 40, 50, 60, 70 });
Console.WriteLine(X.Differentiate());

DenseVector 6-Double
10
10
10
10
10
10

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM