2012-04-04 3 views
1

Я могу выбирать из обычного распределения, используя Boost в C++.Образец из многомерного нормального распределения с использованием Boost

У меня теперь простой вопрос:

Как я могу попробовать из многомерного нормального распределения (п> 2) с использованием Повысьте эффективность функции (нормальное распределение, мульти-массивов ...)?

+0

Я никогда этого не делал, но [это] (http://lists.boost.org/boost-users/att-64979/multivariate_normal_distribution.hpp) может помочь ... – niktehpui

+0

В чем же проблема ? Вы можете просто генерировать нормальное распределение для каждой оси с помощью указанных средств и вариантов. (Если они не коррелированы) – unsym

+1

что делать, если они коррелированы ??? – khelkhel

ответ

1

Я думаю, вы не сможете сделать это без небольшой линейной алгебры. Эффективно, если у вас есть ковариационная матрица C, вы можете создать верхнюю треугольную матрицу L, используя Cholesky Decomposition, такую, что C = L * L^T. Эта матрица L может быть использована теперь для генерации образца из распределения с ковариацией C, применяя L к вектору некоррелированного шума.