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函数详解的主要内容,如果未能解决你的问题,请参考以下文章

在matlab里怎么产生零均值协方差是已知的高斯信号呢?

R:如何计算截断正态分布的均值和协方差

np.random.multivariate_normal方法浅析

numpy笔记整理 multivariate_normal(多元正态分布采样)

心得三

多元统计分析05:多元正态分布的假设检验