犰狳点积 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
标志就足够了。
我目前正在 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
标志就足够了。