summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2010-03-28 09:42:19 +0000
committerAlberto Ruiz <aruiz@um.es>2010-03-28 09:42:19 +0000
commitef333e80b4c4a87ea1b019a5e7c3934366e14c5f (patch)
tree7dee4ede9bde8b4b1a685f0d277850c86e8420ee
parent9a0c3092e572f6bd11329e9acabc6470ef438203 (diff)
randomGaussian using chol
-rw-r--r--lib/Data/Packed/Random.hs6
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/Data/Packed/Random.hs b/lib/Data/Packed/Random.hs
index fea3cdd..7e0f91f 100644
--- a/lib/Data/Packed/Random.hs
+++ b/lib/Data/Packed/Random.hs
@@ -34,12 +34,10 @@ gaussianSample :: Int -- ^ seed
34 -> Matrix Double -- ^ covariance matrix 34 -> Matrix Double -- ^ covariance matrix
35 -> Matrix Double -- ^ result 35 -> Matrix Double -- ^ result
36gaussianSample seed n med cov = m where 36gaussianSample seed n med cov = m where
37 (l,v) = eigSH' cov 37 c = dim med
38 c = dim l
39 meds = constant 1 n `outer` med 38 meds = constant 1 n `outer` med
40 rs = reshape c $ randomVector seed Gaussian (c * n) 39 rs = reshape c $ randomVector seed Gaussian (c * n)
41 ds = sqrt (abs l) 40 m = rs <> cholSH cov + meds
42 m = rs <> (diag ds <> trans v) + meds
43 41
44-- | Obtains a matrix whose rows are pseudorandom samples from a multivariate 42-- | Obtains a matrix whose rows are pseudorandom samples from a multivariate
45-- uniform distribution. 43-- uniform distribution.