zoukankan      html  css  js  c++  java
  • matlab生成指定均值向量和协方差矩阵的多维正态分布样本

    产生一个协方差矩阵为R的n维随机正态分布的一组样本,matlab没有现成的函数,不过我们可以通过一个线性变换来实现。

    我们知道,matlab产生的n维正态样本中的每个分量都是相互独立的,或者说,它的协方差矩阵是一个数量矩阵mI,如:X = randn(10000,4);产生10000个4维分布的正态分布样本,协方差矩阵就是单位矩阵I

    定理 n维随机变量X服从正态分布N(u,B),若m维随机变量YX的线性变换,即Y=XC,其中C是n×m阶矩阵,则Y服从m维正态分布N(uC,C'BC)。

    根据这条定理,我们可以通过一个线性变换C把协方差矩阵为I的n维正态样本变为协方差矩阵为C'C的n维正态样本。如果我们要产生协方差矩阵为R的n维正态样本,由于R为对称正定矩阵,所以有Cholesky分解: R=C'C

    附:matlab程序

    function Y = multivrandn(u,R,M)
    % this function draws M samples from N(u,R)
    % where u is the mean vector(row) and R is the covariance matrix which must be positive definite
    
    n = length(u);             % get the dimension
    C = chol(R);               % perform cholesky decomp R = C'C
    X = randn(M,n);            % draw M samples from N(0,I)
    
    Y = X*C + ones(M,1)*u;
    

    产生指定均值向量和协方差矩阵的多维正态分布样本

    快去成为你想要的样子!
  • 相关阅读:
    CG_Lession
    linux学习网站大全[转]
    C++ books
    Linux 建议学习路径[转]
    talking C++ STL
    Factory
    计算机图像图形学相关好书推荐
    ASP.NET控件缩写大全
    web开发面试题一
    ASP.Net面试题之二
  • 原文地址:https://www.cnblogs.com/jiangkejie/p/15694869.html
Copyright © 2011-2022 走看看