Как я могу записать целые строки в матрицу Armadillo? - PullRequest
0 голосов
/ 03 апреля 2019

В Armadillo я хочу сохранить множество векторов строк в матрице.Я могу изменить запись матрицы A с помощью:

arma:mat A(10,10, 0); // create a 10x10 matrix filled with zeros.
A(i,j) = 1.23; // set element at positon (i,j) to 1.23.

Существует ли способ изменить всю строку матрицы сразу?например:

arma::rowvec V(10); // a row vector of length 10.
A(i) = V; //write entire rowvector V into matrix at position i.

Я знаю, что могу использовать A.insert_rows (i, V);чтобы вставить мой вектор V в матрицу, но я хочу заменить его.В моем коде я уже знаю размеры моей матрицы.Я мог бы также добавить строки в и, но я где-то читал, что код работает быстрее, если я не изменю размер матрицы и вместо этого инициализирую ее с правильным размером.Если кому-то интересно, я пишу программу, которая решает дифференциальные уравнения, и мне нужно записать состояние системы (вектор) в массив (матрицу Армадилло) для сохранения временных рядов.

Я думал, что смогуиспользовать матрицы броненосца, потому что мое состояние системы - вектор броненосца.Я посмотрел в документации Армадилло, но не могу найти правильный путь к этому.(Правильное значение означает что угодно, кроме написания цикла, который повторяет все записи моего вектора - я знаю, что C ++ делает что-то подобное внутри себя, но я предполагаю, что использование функций броненосца будет быстрее).

1 Ответ

1 голос
/ 03 апреля 2019

Использовать представления подматрицы .Некоторые примеры:

arma::mat A(10,10, arma::fill::zeros);
arma::rowvec V(10, arma::fill::randu);

A.row(2) = V;
A.row(3).ones();
A.row(4).randu();
A.row(5).fill(123.4);
...