MathNet.Numerics.LinearAlgebra: как быстро добавить вектор в другой? - PullRequest
0 голосов
/ 05 мая 2018

Я конвертирую алгоритм из Matlab в C #.

В определенный момент в коде matlab есть новый вектор:

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

D - матрица 36x36, z и v - векторы 36x1, m1 и rgb - векторы 3x1. Это означает, что F является вектором 39x1.

Теперь, когда я конвертировал этот код в C # с помощью MathNet, я обнаружил, что, по-видимому, нет функции добавления, и лучшее, на что я мог бы прийти - это код:

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 голосов
/ 31 мая 2019

Не особенно красиво, но это будет работать:

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

Возможно, было бы неплохо добавить функцию для векторов стека 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...