【问题标题】:How can I use Armadillo to compute eigenpairs?如何使用犰狳计算特征对?
【发布时间】:2017-07-10 15:07:51
【问题描述】:

我刚拿到犰狳,想熟悉一下自己,所以我正在用它做一个“测试”

int main(){
    double myMatrix[6][6];
    for (int i = 0; i < 6; i++){
        for (int j = 0; j < 6; j++){
            myMatrix[i][j] = i+2*j;
        }
    }

    mat ARMA_L;
    vec ARMA_eigenval;
    mat ARMA_eigenvec;

    for (int i = 0; i < 6; i++){
        for (int j = 0; j < 6; j++){
            ARMA_L(i,j) = myMatrix[i][j];
        }
    }
    eig_gen(ARMA_eigenval, ARMA_eigenvec, ARMA_L);
    return 0;
}

当我尝试编译时,它说没有调用 eig_gen() 的函数 但是文档似乎我正在做我应该做的事情。

【问题讨论】:

  • 你有#include &lt;armadillo&gt;吗?
  • 我做到了。我确实包括了#include 和 using namespace arma 和 using namespace std; .....等

标签: c++ compiler-errors armadillo eigenvalue


【解决方案1】:

您为 eig_gen() 函数使用了错误的类型。 ARMA_eigenvalARMA_eigenvec 应该分别是 cx_veccx_mat

cx_vec ARMA_eigenval;
cx_mat ARMA_eigenvec;

参见documentation中的示例:

mat A = randu<mat>(10,10);

cx_vec eigval;
cx_mat eigvec;

eig_gen(eigval, eigvec, A);

【讨论】:

  • 即使我没有改变它cx_vec和cx_mat,我得到这个奇怪的编译错误testing5.cpp :(文本$ _ZN4arma6lapack4geevIdEEvPcS2_PiPT_S3_S5_S5_S5_S3_S5_S3_S5_S3_S3 _ [ ZN4arma6lapack4geevIdEEvPcS2_PiPT_S3_S5_S5_S5_S3_S5_S3_S5_S3_S3 I>] + 0x8c):未定义参考到`dgeev_'
  • 这是一个链接器错误,而不是编译错误。您需要像这样链接犰狳库:g++ testing5.cpp -larmadillo.
  • 如何在 Dev-C++ 上链接它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
相关资源
最近更新 更多