在犰狳切片立方体操作

时间:2017-07-29 04:58:35

标签: c++ c++11 linear-algebra armadillo

我正在尝试习惯用于c ++的犰狳线性代数库,我无法弄清楚操作多维数据集的切片(矩阵)。每当我尝试操作切片时,程序编译但不提供任何输出,甚至切片操作之前的语句输出也没有。 这是代码:

#include <armadillo>
#include <iostream>
using namespace arma;
using namespace std;

int main()
{

Cube<double> A(3  , 5 ,1, fill::randu);

Cube<double>B(5,3,1,fill::randu);
Mat<double>x  =A.slice(0);
Mat<double>y = B.slice(0);
cout << x << "\n" << y << endl;
cout << x*y << endl; //code works fine if this line is removed
}

问题是如果删除最后一行,代码工作正常。为什么会这样?有没有更好的方法来操作立方体内的矩阵?

1 个答案:

答案 0 :(得分:1)

使用已接受的this问题答案中给出的说明,使用Visual Studio在Windows上安装Armadillo。

如果您要求链接器使用blas_win64_MT.liblapack_win64_MT.lib库,请确保将相应的.dll添加到与.exe文件相同的目录中。然后使用此代码,我得到所需的输出。

#include <armadillo>
#include <iostream>

using namespace std;
using namespace arma;

int main()
{
    Cube<double> A(3, 5, 1, fill::randu);
    Cube<double> B(5, 3, 1, fill::randu);

    Mat<double> x = A.slice(0);
    Mat<double> y = B.slice(0);

    std::cout << "x:\n" << x << "\ny:\n" << y << std::endl;
    std::cout << "x*y:\n" << x*y << std::endl;
}

在命令窗口中输出:

Armadillo Cube Demo

希望有所帮助!