MATLAB生成多元正态分布随机数(指定均值及协方差)——mvnrnd函数详解
Posted Z.Q.Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB生成多元正态分布随机数(指定均值及协方差)——mvnrnd函数详解相关的知识,希望对你有一定的参考价值。
代码
生成指定均值向量为(3, 2),协方差矩阵为 ( 1 1.5 1.5 4 ) \\left(\\beginaligned&1&1.5\\\\&1.5&4\\endaligned\\right) (11.51.54)的二元正态分布的随机数:
mu = [3 2]; % 均指向量
nov = [1 1.5; 1.5 4]; % 协方差矩阵
% 生成100个二元正态分布随机数
R = mvnrnd(mu, nov, 100);
% 绘制二元正态分布散点图
scatter(R(:,1),R(:,2),'filled');
grid on;
mvnrnd输入参数
mu——多元正态分布的均值
值:数值向量 | 数值矩阵
含义:多元正态分布的平均值,指定为 1×d数值向量
或 m×d数值矩阵
。如果 mu 是一个向量,那么 mvnrd 复制该向量以匹配 sigma 的后续维度。如果 mu 是一个矩阵,那么 mu 的每一行就是单个多元正态分布的均值向量。
数据类型:整型 | 双精度浮点型
sigma——多元正态分布的协方差
值:对称半正定矩阵 | 数字数组
含义:多元正态分布的协方差,指定为 d×d对称半正定矩阵
或 d×d×m 数值数组
。如果 sigma 是一个矩阵,那么 mvnrnd 复制该矩阵以匹配 mu 中的行数。如果 sigma 是一个数组,那么 sigma 的每一个元素,sigma(: , :, i)
是单个多元正态分布的协方差矩阵,因此是一个对称的半正定矩阵。
如果协方差矩阵是对角矩阵,包含沿对角线的方差和零协方差,则还可以将 sigma 指定为 1×d向量
或 仅包含对角线项的1×d×m数组
。
数据类型:整型 | 双精度浮点型
n——多元随机数的个数
值:正标量整数
含义:多变量随机数的数目,指定为正标量整数。n 指定 R 中的行数。
数据类型:整型 | 双精度浮点型
mvnrnd输出参数
R——多元正态随机数
值:数值矩阵
多元正态随机数,返回为以下值之一:
mxd数值矩阵
,其中 m 和 d 是由 μ 和 σ 指定的尺寸n×d数值矩阵
,其中 n 是指定的输入参数,d 是由 mu 和 sigma 指定的维数
如果 mu 是矩阵,sigma 是数组,那么 mvnrnd 使用 mu(i, : ) 和 sigma(:, :, i) 计算 R(i, : )。
以上是关于MATLAB生成多元正态分布随机数(指定均值及协方差)——mvnrnd函数详解的主要内容,如果未能解决你的问题,请参考以下文章
np.random.multivariate_normal方法浅析