MathNet.Numerics.LinearAlgebra:如何快速将Vector附加到另一个?

时间:2018-05-05 17:58:02

标签: c# matlab

我将算法从Matlab转换为C#。

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

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

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

现在,在使用MathNet将此代码转换为C#时,我发现显然没有附加函数,而且我能得到的最好的代码就是这个代码:

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向量?

1 个答案:

答案 0 :(得分:0)

不太漂亮,但这可以工作:

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

添加一个功能可能会是一个很好的功能,该功能可用于Stack 2向量。