11 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
15 using ssv = Eigen::Matrix<double, dimx, 1>;
16 using osv = Eigen::Matrix<double, dimy, 1>;
27 svol_bs(
const double &phi,
const double &beta,
const double &sigma);
30 double logQ1Ev(
const ssv &x1,
const osv &y1);
32 double logGEv(
const osv &yt,
const ssv &xt);
33 auto fSamp(
const ssv &xtm1) -> ssv;
34 auto q1Samp(
const osv &y1) -> ssv;
39 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
42 , m_phi(phi), m_beta(beta), m_sigma(sigma)
47 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
51 x1samp(0) = m_stdNormSampler.
sample() * m_sigma / std::sqrt(1.-m_phi*m_phi);
56 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
60 xtsamp(0) = m_phi * xtm1(0) + m_stdNormSampler.
sample() * m_sigma;
65 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
68 return rveval::evalUnivNorm(yt(0),
70 m_beta * std::exp(.5*xt(0)),
75 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
78 return rveval::evalUnivNorm(x1(0),
80 m_sigma/std::sqrt(1.0 - m_phi*m_phi),
85 template<
size_t nparts,
size_t dimx,
size_t dimy,
typename resampT>
88 return rveval::evalUnivNorm(x1samp(0), 0.0, m_sigma/std::sqrt(1.0 - m_phi*m_phi),
true);
bootstrap particle filter
auto fSamp(const ssv &xtm1) -> ssv
Sample from the state transition distribution.
Definition: svol_bs.h:57
all rv samplers must inherit from this.
auto q1Samp(const osv &y1) -> ssv
Samples from time 1 proposal.
Definition: svol_bs.h:48
A class that performs sampling from a univariate Normal distribution.
Definition: rv_samp.h:51
double sample()
Draws a random number.
double logMuEv(const ssv &x1)
Calculate muEv or logmuEv.
Definition: svol_bs.h:76
A base class for the boostrap particle filter.
Definition: bootstrap_filter.h:17
double logGEv(const osv &yt, const ssv &xt)
Calculate gEv or logGEv.
Definition: svol_bs.h:66
double logQ1Ev(const ssv &x1, const osv &y1)
Calculate q1Ev or log q1Ev.
Definition: svol_bs.h:86