MATLAB 中的 mvnpdf() 函数

Ammar Ali 2022年6月7日 MATLAB MATLAB Function
MATLAB 中的 mvnpdf() 函数

本教程将讨论使用 MATLAB 中的 mvnpdf() 函数评估多元正态分布的概率密度函数。

在 MATLAB 中使用 mvnpdf() 函数

广义版本的单变量正态分布对两个或多个变量的多元正态分布。多元正态分布有两个与单变量正态分布相似的参数,包括协方差矩阵和均值向量。

协方差矩阵的非对角元素包含变量之间的协方差,协方差矩阵的对角元素包含每个变量的方差。在 MATLAB 中,我们使用 mvnpdf() 函数来查找多元正态分布的概率密度函数。

mvnpdf() 函数具有以下三种语法。

语法:

output = mvnpdf(input)
output = mvnpdf(input, mu)
output = mvnpdf(input, mu, sigma)

output = mvnpdf(input) 将返回概率密度函数作为输入矩阵的 n×1 向量,包含维度 m 的多元正态分布。该函数将沿维度 n×m 评估每个输入矩阵行的输出。

output = mvnpdf(input, mu) 将根据 mu 变量返回概率密度函数,该变量定义了多元正态分布的平均值。第三种语法还将包括变量 sigma,它定义了多元正态分布的协方差。

output = mvnpdf(input, mu, sigma) 中,如果我们只想指定 sigma 的值并且我们想使用 mu 的默认值,我们可以传递一个空向量作为 mu 变量作为第二个参数,并将 sigma 的值设置为第三个参数。我们可以使用 mvnrnd() 函数来创建包含随机数的多元正态分布矩阵。

为了创建随机多元正态分布,我们必须在 mvnrnd() 函数中传递 musigma 变量的值。我们还可以通过将数字定义为 mvnrnd() 函数中的第三个参数来设置输出矩阵的行数。

例如,让我们使用 mrnrnd() 函数创建一个多元正态分布的随机矩阵,然后使用 mvnpdf() 函数找到它的概率密度函数。

示例代码:

mu_v = zeros(1,4);
Sigma_m = eye(4);
rng('default')
random_mvn = mvnrnd(mu_v,Sigma_m,6)
out_pdf = mvnpdf(random_mvn)

输出:

random_mvn =

    0.5377   -0.4336    0.7254    1.4090
    1.8339    0.3426   -0.0631    1.4172
   -2.2588    3.5784    0.7147    0.6715
    0.8622    2.7694   -0.2050   -1.2075
    0.3188   -1.3499   -0.1241    0.7172
   -1.3077    3.0349    1.4897    1.6302

out_pdf =

    0.0057
    0.0016
    0.0000
    0.0002
    0.0074
    0.0000

我们使用 zeros() 函数为 mu 变量创建向量,使用 eye() 函数为 sigma 变量创建矩阵,并使用 rng() 函数来控制随机数字生成器,我们已将其设置为默认值以实现可重复性。上面的输出显示了多元正态分布的随机矩阵和包含概率密度函数值的向量。

假设我们要根据不同的均值求某些点的概率密度函数。我们可以将 mu 变量中的平均值定义为 mvnpdf() 函数中的第二个参数。

mu 矩阵大小应与多元正态分布的输入矩阵大小相同。

假设我们要在某些点根据不同的协方差值求概率密度函数。我们可以将 sigma 变量中的协方差值定义为 mvnpdf() 函数内的第三个参数。

sigma 矩阵的列数应与多元正态分布输入矩阵的列数相同。如果我们想找到相同点的概率密度函数,我们可以在 mu 变量内部重复相同的点,默认情况下,mu 变量是一个零向量,sigma 变量是一个的矩阵。

查看此链接了解有关 mvnpdf() 函数的更多详细信息,或查看此链接了解 mvnrnd() 函数。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - MATLAB Function