Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

mvnrnd

多元正态随机数

说明

示例

R = mvnrnd(mu,Sigma,n) 返回一个矩阵 R,该矩阵由从同一多元正态分布(具有均值向量 mu 和协方差矩阵 Sigma)中选择的 n 个随机向量组成。有关详细信息,请参阅多元正态分布

示例

R = mvnrnd(mu,Sigma) 返回一个 m×d 矩阵 R,该矩阵由从 m 个单独的 d 维多元正态分布(其均值和协方差分别由 muSigma 指定)中采样的随机向量组成。R 的每行均为单个多元正态随机向量。

示例

全部折叠

从同一个多元正态分布中生成随机数。

定义 muSigma,并生成 100 个随机数。

mu = [2 3];
Sigma = [1 1.5; 1.5 3];
rng('default')  % For reproducibility
R = mvnrnd(mu,Sigma,100);

绘制这些随机数。

plot(R(:,1),R(:,2),'+')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

从五个不同的三维正态分布中随机采样。

指定分布的均值 mu 和协方差 Sigma。让所有分布共用同一协方差矩阵,但均值向量不同。

firstDim = (1:5)';
mu = repmat(firstDim,1,3)
mu = 5×3

     1     1     1
     2     2     2
     3     3     3
     4     4     4
     5     5     5

Sigma = eye(3)
Sigma = 3×3

     1     0     0
     0     1     0
     0     0     1

从五个分布的每个分布中随机采样一次。

rng('default')  % For reproducibility
R = mvnrnd(mu,Sigma)
R = 5×3

    1.5377   -0.3077   -0.3499
    3.8339    1.5664    5.0349
    0.7412    3.3426    3.7254
    4.8622    7.5784    3.9369
    5.3188    7.7694    5.7147

绘制结果。

scatter3(R(:,1),R(:,2),R(:,3))

Figure contains an axes object. The axes object contains an object of type scatter.

输入参数

全部折叠

多元正态分布的均值,指定为 1×d 数值向量或 m×d 数值矩阵。

  • 如果 mu 是向量,则 mvnrnd 复制该向量以匹配 Sigma 的尾部维度。

  • 如果 mu 是矩阵,则 mu 的每行均为单个多元正态分布的均值向量。

数据类型: single | double

多元正态分布的协方差,指定为 d×d 对称半正定矩阵或 d×d×m 数值数组。

  • 如果 Sigma 是矩阵,则 mvnrnd 复制该矩阵以匹配 mu 中的行数。

  • 如果 Sigma 是数组,则 Sigma 的每页 Sigma(:,:,i) 均为单个多元正态分布的协方差矩阵,因此它是对称半正定矩阵。

如果这些协方差矩阵是对角矩阵,即对角线上为方差且对角线外为零协方差,您也可以将 Sigma 指定为 1×d 的向量或只包含对角线元素的 1×d×m 的数组。

数据类型: single | double

多元随机数的数量,指定为正整数标量。n 指定 R 中的行数。

数据类型: single | double

输出参数

全部折叠

多元正态随机数,以下列形式之一返回:

  • m×d 数值矩阵,其中 m 和 d 是由 muSigma 指定的维度

  • n×d 数值矩阵,其中 n 是指定的输入参数,d 是由 muSigma 指定的维度

如果 mu 是矩阵,而 Sigma 是数组,则 mvnrnd 使用 mu(i,:)Sigma(:,:,i) 来计算 R(i,:)

详细信息

全部折叠

多元正态分布

多元正态分布是一元正态分布的双变量或多变量泛化。它有两个参数,即均值向量 μ 和协方差矩阵 Σ,它们类似于一元正态分布的均值和方差参数。Σ 的对角线元素包含每个变量的方差,而 Σ 的非对角线元素包含变量之间的协方差。

d 维多元正态分布的概率密度函数 (pdf) 是

y = f(x,μ,Σ) = 1|Σ|(2π)dexp(12(x-μΣ-1(x-μ)')

其中 x 和 μ 是 1×d 向量,而 Σ 是 d×d 对称正定矩阵。只有 mvnrnd 允许半正定 Σ 矩阵,它们可以是奇异矩阵。当 Σ 是奇异矩阵时,pdf 不能有相同的形式。

在 x 处计算的多元正态累积分布函数 (cdf) 是随机向量 v(以多元正态形式分布)位于上限由 x 定义的半无限矩形内的概率:

Pr{v(1)x(1),v(2)x(2),...,v(d)x(d)}.

尽管多元正态 cdf 没有封闭形式,但 mvncdf 能够以数值方式计算 cdf 值。

提示

  • mvnrnd 要求矩阵 Sigma 是对称矩阵。如果 Sigma 只是略有不对称,您可以改用 (Sigma + Sigma')/2 来解决不对称问题。

  • 在一维情况下,Sigma 是方差,而不是标准差。例如,mvnrnd(0,4)normrnd(0,2) 相同,其中 4 是方差,2 是标准差。

参考

[1] Kotz, S., N. Balakrishnan, and N. L. Johnson. Continuous Multivariate Distributions: Volume 1: Models and Applications. 2nd ed. New York: John Wiley & Sons, Inc., 2000.

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

版本历史记录

在 R2006a 之前推出