如何使用特征库定义动态矩阵?

时间:2014-02-07 12:18:36

标签: c++ class dynamic matrix eigen

我正在尝试使用Eigen库在C ++中定义动态矩阵。首先我得到行数和列数作为输入(nZ)然后我在下面的类中定义我的矩阵,但它不允许我使用(nZ)作为行数变量!你知道我该怎么办吗?

  

GetParams Params;

     

类哈密顿量{

     

公共:
     哈密​​顿();
     void SetHam0(double,double,int,double)
     虚〜哈密顿量();
     int nZ = Params.Get_nZ();

     

私人:
     Eigen :: MatrixXd U_on = Eigen :: MatrixXd.setZero(nZ,1);
     Eigen :: MatrixXd Ham0 = Eigen :: MatrixXd.setZero(nZ,nZ);
     Eigen :: MatrixXd mstar = Eigen :: MatrixXd.setZero(nZ,nZ);
     Eigen :: MatrixXd U_v = Eigen :: MatrixXd.setZero(nZ,1);

     

};

1 个答案:

答案 0 :(得分:0)

评估构造函数中的nZ和所有矩阵:

class Hamiltonian {

public:
Hamiltonian();
virtual ~Hamiltonian();

private:
Eigen::MatrixXd U_on;
Eigen::MatrixXd Ham0;
Eigen::MatrixXd mstar;
Eigen::MatrixXd U_v;
int nZ;

};

Hamiltonian::Hamiltonian()
{
  GetParams Params;
  nZ = Params.Get_nZ();

  U_on = Eigen::MatrixXd.setZero(nZ,1) ;
  Ham0 = Eigen::MatrixXd.setZero(nZ,nZ) ;
  mstar = Eigen::MatrixXd.setZero(nZ,nZ) ;
  U_v = Eigen::MatrixXd.setZero(nZ,1) ;
}