Stochastic Loading Module
numeric_utils.h
1 #ifndef _NUMERIC_UTILS_H_
2 #define _NUMERIC_UTILS_H_
3 
4 #include <ctime>
5 #include <utility>
6 #include <vector>
7 #include <Eigen/Dense>
8 
12 namespace numeric_utils {
13 
20 Eigen::MatrixXd corr_to_cov(const Eigen::MatrixXd& corr,
21  const Eigen::VectorXd& std_dev);
22 
30 bool convolve_1d(const std::vector<double>& input_x,
31  const std::vector<double>& input_y,
32  std::vector<double>& response);
33 
41 double trapazoid_rule(const std::vector<double>& input_vector, double spacing);
42 
50 double trapazoid_rule(const Eigen::VectorXd& input_vector, double spacing);
51 
56  public:
60  RandomGenerator() = default;
61 
65  virtual ~RandomGenerator() {};
66 
70  RandomGenerator(const RandomGenerator&) = delete;
71 
75  RandomGenerator& operator=(const RandomGenerator&) = delete;
76 
86  virtual bool generate(
87  Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>& random_numbers,
88  const Eigen::VectorXd& means, const Eigen::MatrixXd& cov,
89  unsigned int cases = 1) = 0;
90 
95  virtual std::string name() const = 0;
96 
97  protected:
98  int seed_ = static_cast<int>(
99  std::time(nullptr));
100 };
101 } // namespace numeric_utils
102 
103 #endif // _NUMERIC_UTILS_H_
bool convolve_1d(const std::vector< double > &input_x, const std::vector< double > &input_y, std::vector< double > &response)
virtual bool generate(Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > &random_numbers, const Eigen::VectorXd &means, const Eigen::MatrixXd &cov, unsigned int cases=1)=0
RandomGenerator & operator=(const RandomGenerator &)=delete
double trapazoid_rule(const std::vector< double > &input_vector, double spacing)
Eigen::MatrixXd corr_to_cov(const Eigen::MatrixXd &corr, const Eigen::VectorXd &std_dev)
Definition: numeric_utils.cc:8
virtual std::string name() const =0