【问题标题】:Matlab implement gaussian processMatlab实现高斯过程
【发布时间】:2017-12-14 21:28:19
【问题描述】:

我想在 Matlab 中实现以下高斯过程。到目前为止,我尝试了 normpdf 和 normrnd,但结果不是我所期望的。 B 是一个 NxN 矩阵,并且 en 的预期结果是一个 Nx1 向量。使用这两种方法我得到一个NxN 矩阵。

有什么建议吗?

【问题讨论】:

  • 嗯,这看起来很奇怪。如果您使用矩阵作为 sigma,您应该处理多元分布,并且您应该收到一个矩阵返回。

标签: matlab


【解决方案1】:

我想这就是你要找的东西:

% Number of samples for each variable:
k = 100;

% Your parameters:
mu = [0; 0]; % Vector of Means (0 in your case)
cov = [3 1; 1 3]; % Covariance Matrix (your B)

% Draw the samples...
s = mvnrnd(mu,cov,k);

如果您想手动执行相同的计算(通过生成独立标准正态变量的样本,然后应用适当的变换):

% Number of samples for each variable:
k = 100;

% Your parameters:
mu = [0 0]; % Vector of Means (0 in your case)
cov = [3 1; 1 3]; % Covariance Matrix (your B)

% Draw the samples...
s_ind = randn(k,size(cov,1));
s = repmat(mu,k,1) + (chol(cov) * ind_s);

【讨论】:

    【解决方案2】:

    randn 的文档页面显示了以下示例,用于从二元正态分布生成样本:

    mu = [1 2];
    sigma = [1 0.5; 0.5 2];
    R = chol(sigma);
    z = repmat(mu,10,1) + randn(10,2)*R
    

    mu 是平均向量,您应该将其设置为适当大小的零向量。 sigma 是协方差矩阵,在您的示例中为 B^-1。上面的示例抽取了 10 个样本,您可以根据需要将其更改为任意数量。还记得在您的应用程序中将维度2 更改为N

    【讨论】:

    • 感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2012-04-09
    • 2015-12-16
    • 2014-07-06
    • 2017-02-16
    相关资源
    最近更新 更多