解决重载和rowvec类型转换一致性

时间:2019-01-21 13:30:44

标签: type-conversion armadillo submatrix

具有以下声明: uvec basis; rowvec c; sp_mat B;

表达式c(basis)似乎返回一个 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 :(得分:0)

根据documentationstrtol是不连续的子矩阵,其中c(basis)指定要使用basis中的哪些元素。

在这种情况下,c被“ ...解释为一个长向量,按元素逐列排序”,并且“ ...指定元素的集合被视为列向量”,表示c产生列向量。