перегрузка spsolve и согласованность преобразования типов rowvec - PullRequest
0 голосов
/ 21 января 2019

Со следующими объявлениями: uvec basis; rowvec c; sp_mat B;

Выражение c (основание), кажется, возвращает arma::subview_elem1<double, arma::Mat<unsigned int> >, и следующий вызов работает:

vec pi_B = spsolve(trans(B), c(basis), "superlu"); 

Как работает spsolve разрешить этот ввод?

Также vec pi_B = spsolve(trans(B), trans(c(basis)), "superlu"); выдает ошибку несоответствия размеров, но выполняется следующее:

rowvec d;
vec pi_B2 = spsolve(trans(B), trans(d), "superlu");

1 Ответ

0 голосов
/ 22 января 2019

Согласно документации , c(basis) является несмежной подматрицей, где basis указывает, какие элементы в c использовать.

В этом случае cэто «... интерпретируется как один длинный вектор с упорядочением элементов по столбцам» и что «... совокупный набор указанных элементов обрабатывается как вектор столбцов», что означает, что c(basis) производитвектор столбца.

...