コード例 #1
0
 shared_ptr<arma::mat> mean_matrix(const ExampleIds& example_ids) {
   auto n_rows = param_matrices[0]->n_rows;
   auto n_cols = example_ids.size();
   shared_ptr<arma::mat> mean_mat( new arma::mat(n_rows, n_cols) );
   arma::uword ind = 0;
   for(auto j : example_ids) {
     for(arma::uword i=0; i<n_rows; ++i) {
       // TODO inline?
       (*mean_mat)(i, ind) = mean(i, j);
     }
     ++ind;
   }
   return mean_mat;
 }
コード例 #2
0
ファイル: eigen_moments2.cpp プロジェクト: janelange/cthmm
arma::mat joint_transition_2moment(int j1, int k1, int j2, int k2,Rcpp::List eigen_decomp, double interval_len){
	double t=interval_len;
	arma::cx_colvec v=Rcpp::as<arma::cx_colvec>(eigen_decomp["values"]);
	arma::mat Q=Rcpp::as<arma::mat>(eigen_decomp["rate"]);
	int size=v.n_elem;
	arma::mat mean_mat=arma::zeros<arma::mat>(size,size);
	arma::cx_mat out(size,size);
	if(j1==j2&k1==k2){
		arma::mat regist_matrix=arma::zeros<arma::mat>(size,size);
		regist_matrix(j1,k1)=1;
		mean_mat=joint_mean_markov_jumps_cpp(eigen_decomp,regist_matrix, t);
		
	}
	
	for(int a = 0; a < size; a++){
		for(int b = 0; b < size; b++){
			out(a,b)=mean_mat(a,b)+Q(j1,k1)*Q(j2,k2)*(hobolth_fun(eigen_decomp, t, a,j1,k1,j2,k2,b)(0)+hobolth_fun(eigen_decomp, t, a,j2,k2,j1,k1,b)(0));
		}
	}
	arma::mat real_out=arma::real(out);
	return(real_out);
}