如何从matlab中精确参数化的多元高斯分布中抽取样本

Jin*_*ing 8 matlab probability matrix

我想知道如何在matlab中绘制样本,其中我有精度矩阵和mean作为输入参数.

我知道mvnrnd是一种典型的方法,但它需要协方差矩阵(即精度的倒数)作为参数.

我只有精确矩阵,由于计算问题,我无法反转我的精度矩阵,因为它需要太长时间(我的尺寸约为2000*2000)

小智 8

好问题.请注意,您可以使用标准正态分布中的样本,通过相关维基百科文章中描述的过程,从多变量正态分布生成样本.

基本上,这归结为评估从标准正态分布中采样的独立随机变量的向量A*z + mu在哪里z,mu是均值的向量,并且A*A' = Sigma是协方差矩阵.因为你有后一个数量的倒数,即inv(Sigma)你可以做一个Cholesky分解(见chol)来确定倒数A.然后你需要评估A * z.如果您只知道inv(A)这仍然可以在不执行矩阵求逆的情况下通过改为求解线性系统(例如通过反斜杠运算符)来完成.

Cholesky分解可能仍然存在问题,但我希望这会有所帮助.