Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost-uBLAS矩阵/向量积_C++_Boost_Product_Ublas - Fatal编程技术网

C++ Boost-uBLAS矩阵/向量积

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

有人能举例说明如何使用uBLAS乘积进行乘法吗?或者如果有一个更好的C++矩阵库,你也可以推荐我也欢迎。这正成为一个令人头痛的问题

这是我的密码:

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;istd::cout我对Boost uBLAS没有太多了解,但确实很好,而且性能也很好。

向量和矩阵的乘积是向量,而不是矩阵。

谢谢,我会看一看。哇。到目前为止,我真的很喜欢这个。我花了一些时间搜索矩阵库,但没有找到。通常你会得到LAPACK++MTL在结果和其他方面。有时它们没有开放许可。有时它们不优雅。是的,这很有效。虽然我不明白为什么它不能适用于1x3矩阵。它可以,但你必须将其声明为矩阵。我认为问题在于Boost在仍然只使用头文件的情况下试图提供的灵活性。这使我在某些情况下使用太难了,模板的复杂性开始让你发疯。这就是我对Boost的发现。我认为Eigen库(也只有标题)设法在模板、速度和可用性之间取得了很好的平衡。因此,我将使用该解决方案,而不是使用Boost uBLAS。只有当m.V^t=(V.m)时,这才是真的^其中M是矩阵,V是行向量。