当前位置: 首页>>代码示例>>C++>>正文


C++ SparseMatrix::middleRows方法代码示例

本文整理汇总了C++中eigen::SparseMatrix::middleRows方法的典型用法代码示例。如果您正苦于以下问题:C++ SparseMatrix::middleRows方法的具体用法?C++ SparseMatrix::middleRows怎么用?C++ SparseMatrix::middleRows使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在eigen::SparseMatrix的用法示例。


在下文中一共展示了SparseMatrix::middleRows方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: predictLong_cpp


//.........这里部分代码省略.........
  gig rgig;
  rgig.seed(std::chrono::high_resolution_clock::now().time_since_epoch().count());
  Eigen::VectorXd  z;
  z.setZero(Kobj->d);

  Eigen::VectorXd b, Ysim;
  b.setZero(Kobj->d);

  std::vector<int> longInd;
  for (int i=0; i< nindv; i++) longInd.push_back(i);

  Eigen::SparseMatrix<double,0,int> K = Eigen::SparseMatrix<double,0,int>(Kobj->Q);
  K *= sqrt(Kobj->tau);

  std::vector< Eigen::MatrixXd > WVec(nindv);
  std::vector< Eigen::MatrixXd > XVec(nindv);

  for(int i = 0; i < nindv; i++ ) {
    if(silent == 0){
      Rcpp::Rcout << " Compute prediction for patient " << i << "\n";
    }

    XVec[i].resize(As_pred[i].rows(), nSim);
    WVec[i].resize(As_pred[i].rows(), nSim);
    Eigen::MatrixXd random_effect = mixobj->Br[i];
    Eigen::MatrixXd fixed_effect = mixobj->Bf[i];
    for(int ipred = 0; ipred < pred_ind[i].rows(); ipred++){
      //if(silent == 0){
      //  Rcpp::Rcout << " location = " << ipred << ": "<< obs_ind[i](ipred,0)<< " " << obs_ind[i](ipred,1) << "\n";
      //  Rcpp::Rcout << " A size = " <<  As[i].rows() << " " << As[i].cols() << "\n";
      //  Rcpp::Rcout << " Y size = " <<  Ys[i].size() << ", re = " << random_effect.rows() << ", fe = "<< fixed_effect.size() << "\n";
      //}
      //extract data to use for prediction:
      Eigen::SparseMatrix<double,0,int> A = As[i].middleRows(obs_ind[i](ipred,0),obs_ind[i](ipred,1));
      Eigen::VectorXd  Y = Ys[i].segment(obs_ind[i](ipred,0),obs_ind[i](ipred,1));
      mixobj->Br[i] = random_effect.middleRows(obs_ind[i](ipred,0),obs_ind[i](ipred,1));
      mixobj->Bf[i] = fixed_effect.middleRows(obs_ind[i](ipred,0),obs_ind[i](ipred,1));
      //Rcpp::Rcout  << "here1111\n";
      for(int ii = 0; ii < nSim + nBurnin; ii ++){
        //Rcpp::Rcout << "iter = " << ii << "\n";
        Eigen::VectorXd  res = Y;
        //***************************************
        //***************************************
        //   building the residuals and sampling
        //***************************************
        //***************************************

        // removing fixed effect from Y
        mixobj->remove_cov(i, res);
        res -= A * process->Xs[i];
        //***********************************
        // mixobj sampling
        //***********************************
        //Rcpp::Rcout << "here2\n";
        if(type_MeasurementError == "Normal")
          mixobj->sampleU( i, res, 2 * log(errObj->sigma));
        else
          //errObj->Vs[i] = errObj->Vs[i].head(ipred+1);
          mixobj->sampleU2( i,
                            res,
                            errObj->Vs[i].segment(obs_ind[i](ipred,0),obs_ind[i](ipred,1)).cwiseInverse(),
                            2 * log(errObj->sigma));

          mixobj->remove_inter(i, res);

        //***********************************
开发者ID:JonasWallin,项目名称:LangLong,代码行数:67,代码来源:predict.cpp


注:本文中的eigen::SparseMatrix::middleRows方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。