犰狳点积 C++

Armadillo Dot product C++

我目前正在 Ubuntu code::blocks 和 运行 尝试做线性代数时遇到一些问题。

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

在编译器设置>搜索目录>链接器下我有“/user/lib”

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

我评论了代码的哪一部分给我错误。没有代码中困难的部分,我的代码 运行 没问题,所以我想我已经安装好了犰狳?那为什么我不能访问它的所有功能?

#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
}

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