我将算法从Matlab转换为C#。
在某个时刻,matlab代码中有这个新的向量:
F = [D * z + v; m1 + rgb];
D
是36x36矩阵,z
和v
是36x1向量,m1
和rgb
是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
向量?
答案 0 :(得分:0)
不太漂亮,但这可以工作:
F = firstElements.ToColumnMatrix().Stack(lastElements.ToColumnMatrix()).Column(0);
添加一个功能可能会是一个很好的功能,该功能可用于Stack 2向量。