Armadillo Dot产品C ++

时间:2017-11-18 22:26:44

标签: c++ product armadillo scalar

我目前使用的是Ubuntu code :: blocks,在尝试进行线性代数时会遇到一些问题。

在编译器设置下>搜索目录>编译器我有" / usr / include"

并在编译器设置>搜索目录>链接器我有" / user / lib"

我的liblapack-dev,libblas-dev,libboost-dev,libarmadillo-dev通过apt-get安装

我评论了代码的哪一部分给了我错误。没有代码的困难部分我的代码运行正常,所以我认为我安装armadillo很好?那么为什么我无法访问它的所有功能呢?

#include <iostream>
#include <armadillo>
using namespace arma;
using namespace std;
int main()
{
    mat A;
    A<<1<<2<<endr<<3<<4;
    cout<<A;
    vec e=A.col(0);
    vec r=A.col(1);
    cout<<endl<<e<<endl<<r<<endl;//works perfectly up to here
    //if only there was not more of these codes
    cout<<e*r<<endl;//doesnt work from here anymore
    float y=dot(A,A);//from here on i get the error message:
    cout<<y<<endl;//'wrapper_ddot_' is not defined
    double z=as_scalar(e*r);//and wrapper_blas.hpp file opens
    double t=dot(e,r);
    cout<<z<<endl;//and points me to line 185
    return 0;//with an error
}

1 个答案:

答案 0 :(得分:0)

代码中存在错误。您使用的是e*r,但它们都是2x1,因此您需要将e转换为e.t()*r,以便获得1x1的产品。下面三行也有同样的问题。如果您使用apt-get安装了Armadillo,通常不需要添加blas / lapack库。将-larmadillo标志用于链接器就足够了。