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, два объекта будут продолжать делиться памятью.

Другие вопросы по тегам