首页 > 解决方案 > spsolve重载和rowvec类型转换一致性

问题描述

使用以下声明: uvec basis; rowvec c; sp_mat B;

表达式 c(basis) 似乎返回 an 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");

标签: type-conversionarmadillosubmatrix

解决方案


根据文档c(basis)是一个不连续的子矩阵,其中basis指定c要使用的元素。

在这种情况下c是“......解释为一个长向量,元素按列排序”并且“......指定元素的聚合集被视为列向量”,这意味着c(basis)产生列向量。


推荐阅读