From 915bb4c45141ae5852ccd2f4d5a9c2958b64c707 Mon Sep 17 00:00:00 2001 From: George Perendia Date: Sat, 11 Dec 2010 19:22:27 +0000 Subject: [PATCH] Estimation C++ DLL: Bug-fixing Sampler --- mex/sources/estimation/RandSampler.cc | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/mex/sources/estimation/RandSampler.cc b/mex/sources/estimation/RandSampler.cc index ddf904fe5..ce4b41003 100644 --- a/mex/sources/estimation/RandSampler.cc +++ b/mex/sources/estimation/RandSampler.cc @@ -24,6 +24,7 @@ /////////////////////////////////////////////////////////// #include "RandSampler.hh" +#include "BlasBindings.hh" /** * draw = Mean + randn(1,n) * Sigma_upper_chol; @@ -32,12 +33,14 @@ void RandSampler::randMultiVar(Prior &distribution, Vector &draw, const Vector &mean, const Matrix &Scale, const size_t n) { assert(n == draw.getSize()); - assert(n == mean.getSize() || 1 == mean.getSize()); - assert(n == Scale.getRows() || 1 == Scale.getRows()); - assert(n == Scale.getCols() || 1 == Scale.getCols()); + assert(n == mean.getSize() ); + assert(n == Scale.getRows()); + assert(n == Scale.getCols()); + + draw=mean; + Vector drawTmp(n); for (size_t i = 0; i < n; ++i) - draw(i) = mean(1 == mean.getSize() ? 0 : i) - + distribution.drand() - *Scale((1 == Scale.getRows() ? 0 : i), (1 == Scale.getCols() ? 0 : i)); + drawTmp(i) = distribution.drand(); + blas::gemv("T", 1.0, Scale, drawTmp, 1.0, draw); } -- GitLab