我正在尝试习惯用于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
}
问题是如果删除最后一行,代码工作正常。为什么会这样?有没有更好的方法来操作立方体内的矩阵?
答案 0 :(得分:1)
使用已接受的this问题答案中给出的说明,使用Visual Studio在Windows上安装Armadillo。
如果您要求链接器使用blas_win64_MT.lib
和lapack_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;
}
在命令窗口中输出:
希望有所帮助!