Armadillo - заполнить матрицу из значений в векторе столбца
Я хотел бы идти вперед и назад между arma::mat
размером M х N и arma::vec
размером MN (который является линеаризацией матрицы по главному столбцу).
Я могу легко перейти от матрицы к вектору, используя arma::vectorise
т.е.
arma::vec vector = arma::vectorise(matrix);
Однако я не могу найти простой способ пойти другим путем. Я хотел бы вставить первые значения М вектора в первый столбец матрицы, вторые значения М во второй столбец и так далее. Есть ли способ сделать это эффективно?
1 ответ
Решение
Сделайте память из матрицы доступной для вектора с помощью расширенных конструкторов:
mat X(4,5);
vec V(X.memptr(), X.n_elem, false, false);
// changing elements in X or V will affect both
Пока ваши операции не вызывают алиасинга или изменения размера X
или же V
, два объекта будут продолжать делиться памятью.