首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:截断多元正态随机抽样?

Matlab:截断多元正态随机抽样?
EN

Stack Overflow用户
提问于 2020-05-17 04:45:46
回答 1查看 188关注 0票数 2

我希望在Matlab中直接从截断的多变量正态分布中采样。

我知道我可以简单地使用mvnrnd并检查返回值是否在感兴趣的域中。然而,当需要大量样本时,这是一种资源浪费。

Matlab有一个内置的函数truncate reference,它将截断给定的概率分布对象。不幸的是,mvnpdf reference返回给定位置的pdf的值,而不是概率对象参见:pdf。此外,truncate似乎只支持一维问题。

除了简单地忽略感兴趣的域外的数据之外,有什么想法可以直接从截断的多变量正态分布中采样?或者这通常是我将不得不接受的东西?

文件交换的示例似乎实现了某种形式的拒绝采样:

Truncated Normal Generator

Truncated Multivariate Normal Generator

Another Truncated Normal Generator

EN

回答 1

Stack Overflow用户

发布于 2020-05-19 00:59:44

显然,从这个分布中采样并不是微不足道的。但这里有一些建议。

  • Truncated multivariate normal in SciPy?。在这里,被接受的答案使用马尔可夫链蒙特卡罗基于截断正态分布的log-PDF进行采样。(请注意,答案是使用Python,而不是MATLAB.)
  • https://hal.archives-ouvertes.fr/hal-01063978/document。这是一个从这个分布中采样的算法。虽然这也使用拒绝抽样,但如果感兴趣的域远离分布模式,它可能会更有效。只有当感兴趣的域是凸的时,它才有效。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61843321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档