【问题标题】:MathNet.Numerics.LinearAlgebra: how to append a Vector to another quickly?MathNet.Numerics.LinearAlgebra:如何快速将向量附加到另一个向量?
【发布时间】:2019-05-31 16:26:42
【问题描述】:

我正在将一个算法从 Matlab 转换为 C#。

在某个时刻,matlab 代码中有这个新向量:

F = [D * z + v; m1 + rgb];

D 是 36x36 矩阵,zv 是 36x1 向量,m1rgb 是 3x1 向量。这意味着F 是一个 39x1 向量。

现在,当使用 MathNet 将此代码转换为 C# 时,我发现显然没有 append 函数,而我能想到的最好的就是这段代码:

var F = Vector<float>.Build.Dense(39);
var firstElements = Vector<float>.Build.Dense(36);
var lastElements = Vector<float>.Build.Dense(3);
firstElements = D * z + v;
lastElements = m1 + rgb;
firstElements.CopySubVectorTo(F, 0, 0, firstElements.Count);
lastElements.CopySubVectorTo(F, 0, firstElements.Count, lastElements.Count);

有没有更快的方法来创建F 向量?

【问题讨论】:

  • 不过有一个 Add 方法。
  • @TaW 是的,但是,如果我没记错的话,Add 用于对向量元素的值求和(或单个向量元素的标量),而不是添加现有向量的新元素。
  • 啊,对,对不起..

标签: c# matlab


【解决方案1】:

不是特别漂亮,但这会起作用:

F = firstElements.ToColumnMatrix().Stack(lastElements.ToColumnMatrix()).Column(0);

这可能是一个很好的特性,可以添加到 Stack 2 向量的函数。

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多