我希望在Matlab中直接从截断的多变量正态分布中进行抽样。
我知道我可以简单地使用 mvnrnd
并检查返回的值是否在感兴趣的领域内。然而,当需要大量样本时,这样做是一种资源浪费。
Matlab有一个内置的函数 truncate
参考 将截断一个给定的概率分布对象。不幸的是, mvnpdf
参考 返回给定位置的pdf值,而不是概率对象。pdf. 此外, truncate
似乎只支持一维问题。
除了简单地忽略兴趣域外的数据外,有什么办法可以直接从截断的多变量正态中取样?还是说一般情况下我必须要接受这个问题?
文件交流中的例子似乎实现了某种形式的拒绝采样。
显然,从这个分布中采样并不完全是小事一桩。但这里有一些提示。