1#include"ensembleClass.H"
8ensemble::ensemble(
int _Nsamples,
int _samplesSize)
11 samplesSize = _samplesSize;
12 samples = Eigen::MatrixXd(samplesSize, Nsamples);
15ensemble::ensemble(Eigen::MatrixXd _samples)
18 Nsamples = samples.cols();
19 samplesSize = samples.rows();
29 std::string message =
"Sample index (" + std::to_string(sampleI) +
30 ") is bigger than the number of samples ("
31 + std::to_string(samplesSize) +
")";
32 M_Assert(sampleI < samples.cols(), message.c_str());
33 return samples.col(sampleI);
44 "The input sample should have the right size. Here input size = " +
45 std::to_string(_sample.size())
46 +
" while samplesSize = "
47 + std::to_string(samplesSize);
48 M_Assert(_sample.size() == samplesSize, message.c_str());
49 M_Assert(sampleI < Nsamples,
50 "The index of the input sample is bigger than the number of samples in the ensemble");
51 samples.col(sampleI) = _sample;
56 M_Assert(_samples.size() > 0,
"Not valid input matrix");
57 Nsamples = _samples.cols();
61 samplesSize = _samples.rows();
65 std::string message =
"The input samples have a different size. Input size = " +
66 std::to_string(_samples.rows())
67 +
" while samplesSize = "
68 + std::to_string(samplesSize);
69 M_Assert(_samples.rows() == samplesSize, message.c_str());
77 return samples.rowwise().mean();
82 Eigen::MatrixXd centered = samples.colwise() - samples.rowwise().mean();
83 return (centered * centered.adjoint()) / double(Nsamples - 1);
88 std::string message =
"Input has wrong number of samples. Nsamples = " +
89 std::to_string(Nsamples) +
"while samples2.cols() = " +
90 std::to_string(samples2.cols());
91 M_Assert(samples2.cols() == Nsamples, message.c_str());
92 Eigen::MatrixXd centered1 = samples.colwise() - samples.rowwise().mean();
93 Eigen::MatrixXd centered2 = samples2.colwise() - samples2.rowwise().mean();
94 return (centered1 * centered2.adjoint()) / double(Nsamples - 1);
Eigen::MatrixXd cov()
Samples autocovariance.
int getSize()
Get number of samples.
void assignSample(int sampleI, Eigen::VectorXd sample)
Assign a sample.
Eigen::MatrixXd getSamples()
Get matrix of samples.
Eigen::VectorXd getSample(int sampleI)
Get matrix of samples.
void assignSamples(Eigen::MatrixXd _samples)
Assing the samples matrix.
Eigen::VectorXd mean()
Samples mean.
Eigen::MatrixXd crossCov(Eigen::MatrixXd samples2)
Samples cross covariance.