matlab高斯分布协方差矩阵,关于Matlab:使用协方差矩阵生成正态分布的随机向量...

在matlab中,很容易生成具有均值和标准差的正态分布随机向量。 从帮助兰德:

从均值1和标准的正态分布生成值

偏差2。

r = 1 + 2. * randn(100,1);

现在我有一个协方差矩阵C,我想生成N(0,C)。

但是我该怎么办呢?

从randn帮助:

从具有指定均值的双变量正态分布生成值

向量和协方差矩阵。

mu = [1 2];

西格玛= [1 .5; .5 2]; R = chol(Sigma);

z = repmat(mu,100,1)+ randn(100,2)* R;

但是我不知道他们在这里做什么。

您不了解哪一部分? mu是均值向量(在您的情况下为0,请不要使用),Sigma是协方差矩阵,它们将生成100对随机数。

我不了解repmat部分。 也可以这样做:chol(C,lower)+ randn(N,1); 与C的协方差矩阵

抱歉,我现在知道了。 repmat用于为100对随机数建立均值矩阵。

您可以从统计信息工具箱中使用MVNRND函数,请参见以下相关问题:stackoverflow.com/questions/4041866/gaussian-basis-function

@Donnie或Amro:您应该发布答案,以便Derk可以接受,这个问题将被存档,任何人都可以咨询:)

这有点是数学问题,不是编程问题。但是,我非常喜欢编写既需要扎实的数学知识又需要编程知识的出色代码,因此我将其编写为后代。

您需要进行Cholesky分解(或矩阵的任何分解/平方根)以从独立变量中生成相关的随机变量。这是因为如果X是均值m和协方差D的多元法线,则Y = AX是均值Am和协方差矩阵ADA'的多元法线,其中A'是转置。如果D是单位矩阵,则协方差矩阵只是AA',您要使其等于要尝试生成的协方差矩阵C。

Cholesky分解计算出这样的矩阵A,这是最有效的方法。

有关更多信息,请参见:http://web.as.uky.edu/statistics/users/viele/sta601s03/multnorm.pdf

您可以使用以下内置的matlab函数来完成工作

mvnrnd(mu,SIGMA)

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值