不能用犰狳乘矩阵

Can't multiply matrix with armadillo

本文关键字:不能      更新时间:2023-10-16

我不能用犰狳做矩阵乘法。我不知道是否还有其他不能使用的功能。到目前为止,我只使用向量和点积,没有问题。基本上:

#include <iostream>
#include <armadillo>
using namespace std;
using namespace arma;
int main(){
    //this works
    vec v = randu<vec>(10);
    cout<<dot(v,v)<<endl;
    int n =5;
    //this doesn't work
    mat M = randu<mat>(n,n); // program compiles but stops running when reaches here
    cout<<M*M<<endl;
    return 0;
}

我正在使用最新版本的代码块和犰狳。操作系统为windows 7。我在编译器链接器设置中包含了lapack和blas库,blas_win64_MT和lapack_win64_MT都在PATH中。我还在搜索目录中包含了de armadillo文件夹。在config.hpp(犰狳文件夹)中,#define ARMA_USE_LAPACK和#define ARMA_USE_BLAS没有注释。#define ARMA_USE_WRAPPER被注释。此外,我试图将-lapack -lblas添加到构建->项目选项->编译器->其他选项和构建->项目选项->链接器设置->其他选项,但我没有成功。当我试图用#define ARMA_USE_WRAPPER(未注释)向编译器添加-larmadillo时,也发生了同样的事情。我错过了什么?

您的程序当然非常好,因为Armadillo是一个精心设计和交付的库。

不正确的可能是您的安装或本地设置。只有你自己能弄明白。

在我的盒子上,在命令行上——我只需要链接到libarmadillo,它本身有链接到lapack和blas:

edd@max:/tmp$ g++ -o arma5by5 arma5by5.cpp -larmadillo
edd@max:/tmp$ ./arma5by5 
4.06892
   1.5043   1.3996   0.6353   0.8246   1.4694
   1.6543   1.6822   0.4338   0.6739   1.5782
   1.3145   1.2759   0.3825   0.4967   1.2959
   1.4222   1.4584   1.0028   1.3742   1.3593
   1.6126   1.7886   0.4599   0.8348   1.5648
edd@max:/tmp$