Armadillo函数eig_sym()不工作
Armadillo function eig_sym() not working
我正试图使用Armadillo线性代数库中的函数eig_sym来找到一个正方形矩阵的特征值:
mat STRESS = Mat<double>(3, 3, fill::zeros);
vec principals;
/**
Populate STRESS with symmetric values
from a stress tensor history named "stressTensor"
**/
STRESS(0,0) = stressTensor[XX].data[0];
STRESS(0,1) = stressTensor[XY].data[0];
STRESS(0,2) = stressTensor[XZ].data[0];
STRESS(1,0) = stressTensor[XY].data[0];
STRESS(1,1) = stressTensor[YY].data[0];
STRESS(1,2) = stressTensor[YZ].data[0];
STRESS(2,0) = stressTensor[XZ].data[0];
STRESS(2,1) = stressTensor[YZ].data[0];
STRESS(2,2) = stressTensor[ZZ].data[0];
eig_sym(principals, STRESS); // Code fails here
我得到std::logic_error消息,根据Armadillo Doc的说法,这意味着矩阵应力不是正方形的,尽管它显然是正方形的。
我甚至运行了Armadillo Doc:的示例代码
// for matrices with real elements
mat A = randu<mat>(50,50);
mat B = A.t()*A; // generate a symmetric matrix
vec eigval;
mat eigvec;
eig_sym(eigval, eigvec, B);
这还会产生std::logic_error消息。
我觉得我错过了一些非常简单的东西,因为我甚至无法让示例代码发挥作用。Include目录设置正确,因为我在项目的其他地方使用arma::函数没有问题。
提前感谢您的帮助!
Louis Vallance
于格林尼治标准时间1316GMT于2014年10月24日编辑:我认为这个错误是因为我没有配置LAPACK。我的印象是Armadillo附带了LAPACK和openBLAS预编译。如果我只安装了Armadillo,我如何配置我的项目与LAPACK链接?
- 更改armadillo_bits中的配置文件,并取消对以下行
#define ARMA_USE_LAPACK
和#define ARMA_USE_BLAS
的注释 - http://ylzhao.blogspot.com.au/2013/10/blas-lapack-precompiled-binaries-for.html该链接将帮助下载blas和LAPACK库的预编译版本下载版本32位,具体取决于您的mingW位安装
- 在项目内部放置文件夹
- 在工具设置下转到项目属性>c++构建>mingw c++链接器>设置不带库扩展名的库的名称
- 添加库搜索路径并从工作空间选项中进行选择
- 将这些库的dll文件放在项目文件夹中
这应该足以运行
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 链表c++插入,所有情况都已检查,但没有任何工作
- 为什么stream::忽略未按预期工作