【发布时间】:2017-07-29 04:58:34
【问题描述】:
我正在尝试习惯 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
}
问题是如果最后一行被删除,代码可以正常工作。为什么会这样?有没有更好的方法来操作立方体内的矩阵?
【问题讨论】:
-
我无法重现您的问题,代码对我来说很好。也许与犰狳或编译器版本有关?我使用犰狳 7.300 和 gcc 6.2.1。
-
@Hannebambel 我在 Windows 10 上使用 armadillo 7.950.1 和 gcc 7.1.0
-
@Hannebambel 你在使用 Windows 吗?我认为这可能是问题,因为犰狳库是使用 MSVC 2012 构建的
-
我正在使用 linux,刚刚使用 Armadillo 7.900 和 gcc 7.1.1 以及 clang 4.0.0 验证了您的程序。所以我想你是对的,Windows 就是这里的问题。也许您可以使用 gcc 自己编译犰狳?
-
@Hannebambel 好吧,我已经习惯了标准库,这是我第一次使用一些外部数学库。所以,我不知道如何使用 gcc 构建犰狳。你能提供一些步骤或链接到某个网站吗?
标签: c++ c++11 linear-algebra armadillo