C++ Boost-uBLAS矩阵/向量积
有人能举例说明如何使用uBLAS乘积进行乘法吗?或者如果有一个更好的C++矩阵库,你也可以推荐我也欢迎。这正成为一个令人头痛的问题 这是我的密码:C++ Boost-uBLAS矩阵/向量积,c++,boost,product,ublas,C++,Boost,Product,Ublas,有人能举例说明如何使用uBLAS乘积进行乘法吗?或者如果有一个更好的C++矩阵库,你也可以推荐我也欢迎。这正成为一个令人头痛的问题 这是我的密码: vector<double> myVec(scalar_vector<double>(3)); matrix<double> myMat(scalar_matrix<double>(3,3,1)); matrix<double> temp = prod(myVec, myMat); 向量m
vector<double> myVec(scalar_vector<double>(3));
matrix<double> myMat(scalar_matrix<double>(3,3,1));
matrix<double> temp = prod(myVec, myMat);
向量myVec(标量向量(3));
矩阵myMat(标量_矩阵(3,3,1));
矩阵温度=产品(myVec,myMat);
以下是错误:
cannot convert from 'boost::numeric::ublas::matrix_vector_binary1<E1,E2,F>' to 'boost::numeric::ublas::matrix<T>'
无法从“boost::numeric::ublas::matrix\u vector\u binary1”转换为“boost::numeric::ublas::matrix”
我已经找遍了。Stackoverflow对此有疑问。Boost文档有一个例子。
我从示例中复制了代码,但它对我没有用处,因为为stdout工作的模板魔法对我来说是无用的
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
using namespace boost::numeric::ublas;
matrix<double> m (3, 3);
vector<double> v (3);
for (unsigned i = 0; i < std::min (m.size1 (), v.size ()); ++ i) {
for (unsigned j = 0; j < m.size2 (); ++ j)
m (i, j) = 3 * i + j;
v (i) = i;
}
std::cout << prod (m, v) << std::endl;
std::cout << prod (v, m) << std::endl;
}
#包括
#包括
int main(){
使用名称空间boost::numeric::ublas;
矩阵m(3,3);
向量v(3);
对于(无符号i=0;i std::cout我对Boost uBLAS没有太多了解,但确实很好,而且性能也很好。向量和矩阵的乘积是向量,而不是矩阵。谢谢,我会看一看。哇。到目前为止,我真的很喜欢这个。我花了一些时间搜索矩阵库,但没有找到。通常你会得到LAPACK++MTL在结果和其他方面。有时它们没有开放许可。有时它们不优雅。是的,这很有效。虽然我不明白为什么它不能适用于1x3矩阵。它可以,但你必须将其声明为矩阵。我认为问题在于Boost在仍然只使用头文件的情况下试图提供的灵活性。这使我在某些情况下使用太难了,模板的复杂性开始让你发疯。这就是我对Boost的发现。我认为Eigen库(也只有标题)设法在模板、速度和可用性之间取得了很好的平衡。因此,我将使用该解决方案,而不是使用Boost uBLAS。只有当m.V^t=(V.m)时,这才是真的^其中M是矩阵,V是行向量。