不能将矩阵与犰狳相乘

时间:2015-08-24 01:36:32

标签: c++ codeblocks armadillo

我不能用犰狳进行矩阵乘法。我不知道是否有更多我无法使用的功能。到目前为止,我只使用矢量和点积没有问题。 基本上是:

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

我使用的是最新版本的codeblock和armadillo。操作系统是Windows 7.我在编译器链接器设置中包含了lapack和blas库,而blas_win64_MT和lapack_win64_MT都在PATH中。我还在搜索目录中包含了de armadillo文件夹。在config.hpp(armadillo文件夹)中,取消注释#define ARMA_USE_LAPACK和#define ARMA_USE_BLAS。 #define ARMA_USE_WRAPPER已发表评论。另外,我试图将-lapack -lblas添加到build-&gt;项目选项 - &gt;编译器 - &gt;其他选项和build-&gt;项目选项 - &gt;链接器设置 - &gt;其他选项,但我有没有成功。当我尝试使用#define ARMA_USE_WRAPPER取消注释时将-larmadillo添加到编译器时发生了同样的事情。 我错过了什么?

1 个答案:

答案 0 :(得分:2)

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

可能不正确的是您的安装或本地设置。只有你能搞清楚。

在我的盒子上,在命令行上 - 我只需要与libarmadillo链接,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$ 本身与lapack和blas有联系:

submit button