20#ifndef GAUSSIAN_PROCESS_H
21#define GAUSSIAN_PROCESS_H
41 covariance_functions::CovFunc* covFunc_;
42 covariance_functions::CovFunc* covFuncProj_;
43 Eigen::VectorXd data_loc_;
44 Eigen::VectorXd data_out_;
45 Eigen::VectorXd data_var_;
46 Eigen::MatrixXd gram_matrix_;
47 Eigen::VectorXd alpha_;
48 Eigen::LDLT<Eigen::MatrixXd> chol_gram_matrix_;
50 bool use_explicit_trend_;
51 Eigen::MatrixXd feature_vectors_;
52 Eigen::MatrixXd feature_matrix_;
53 Eigen::LDLT<Eigen::MatrixXd> chol_feature_matrix_;
54 Eigen::VectorXd beta_;
57 typedef std::pair<Eigen::VectorXd, Eigen::MatrixXd> VectorMatrixPair;
60 GP(
const covariance_functions::CovFunc& covFunc);
61 GP(
const double noise_variance,
62 const covariance_functions::CovFunc& covFunc);
66 GP& operator=(
const GP& that);
73 bool setCovarianceFunction(
const covariance_functions::CovFunc& covFunc);
78 void enableOutputProjection(
const covariance_functions::CovFunc& covFunc);
83 void disableOutputProjection();
90 Eigen::VectorXd drawSample(
const Eigen::VectorXd& locations)
const;
95 Eigen::VectorXd drawSample(
const Eigen::VectorXd& locations,
96 const Eigen::VectorXd& random_vector)
const;
112 void infer(
const Eigen::VectorXd& data_loc,
113 const Eigen::VectorXd& data_out,
114 const Eigen::VectorXd& data_var = Eigen::VectorXd());
123 void inferSD(
const Eigen::VectorXd& data_loc,
124 const Eigen::VectorXd& data_out,
126 const Eigen::VectorXd& data_var = Eigen::VectorXd(),
127 const double prediction_point = std::numeric_limits<double>::quiet_NaN());
141 Eigen::VectorXd predict(
const Eigen::VectorXd& locations, Eigen::VectorXd* variances =
nullptr)
const;
150 Eigen::VectorXd predictProjected(
const Eigen::VectorXd& locations, Eigen::VectorXd* variances =
nullptr)
const;
157 Eigen::VectorXd predict(
const Eigen::MatrixXd& prior_cov,
const Eigen::MatrixXd& mixed_cov,
158 const Eigen::MatrixXd& phi = Eigen::MatrixXd() , Eigen::VectorXd* variances =
nullptr)
const;
163 void setHyperParameters(
const Eigen::VectorXd& hyperParameters);
168 Eigen::VectorXd getHyperParameters()
const;
173 void enableExplicitTrend();
178 void disableExplicitTrend();
The file holds the covariance functions that can be used with the GP class.