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