MATLAB 中的直方圖

Ammar Ali 2023年1月30日
  1. 在 MATLAB 中建立向量直方圖
  2. 在 MATLAB 中建立分類直方圖
  3. 在 MATLAB 中建立歸一化直方圖
  4. 在 MATLAB 中的同一圖形上繪製多個直方圖
  5. 在 MATLAB 中儲存直方圖
  6. MATLAB 中的雙變數直方圖
MATLAB 中的直方圖

在本教程中,我們將討論如何使用 MATLAB 中的 histogram()histogram2() 函式繪製給定資料的直方圖。

在 MATLAB 中建立向量直方圖

要建立給定向量的直方圖,可以在 MATLAB 中使用 histogram() 函式。例如,讓我們建立一個給定向量的直方圖。請參見下面的程式碼。

vector = randn(100,1);
HG = histogram(vector)

輸出:

HG = 

  Histogram with properties:

             Data: [100x1 double]
           Values: [2 18 29 31 17 3]
          NumBins: 6
         BinEdges: [-3 -2 -1 0 1 2 3]
         BinWidth: 1
        BinLimits: [-3 3]
    Normalization: 'count'
        FaceColor: 'auto'
        EdgeColor: [0 0 0]

Matlab 中向量的直方圖

在上面的程式碼中,我們建立了隨機向量的直方圖。在輸出中,直方圖的屬性,我們可以更改這些屬性。例如,讓我們使用 FaceColor 屬性更改直方圖的前部顏色,使用 EdgeColor 屬性更改邊緣的顏色,並使用 NumBins 屬性更改 bin 的數量。請參見下面的程式碼。

vector = randn(100,1);
HG = histogram(vector);
HG.FaceColor = 'g';
HG.EdgeColor = 'r';
HG.NumBins = 10;

輸出:

直方圖屬性

直方圖的面部顏色更改為綠色,邊緣顏色更改為紅色,bin 的數量更改為 10。你還可以根據需要更改其他直方圖屬性。

在 MATLAB 中建立分類直方圖

你也可以使用 histogram() 函式建立分類直方圖。你可以在分類陣列中定義值,例如一些名稱等,並且必須為每個分類變數提供一個值,該值將在直方圖中顯示為高度。例如,讓我們建立三個類別變數的直方圖:YesNoNot Sure。請參見下面的程式碼。

Vector = [7 7 7 8 8 8 8 9 7 8 8 8 7 8 7 8 7 8 8 8];
Cat = categorical(Vector,[7 8 9],{'Yes','No','Not Sure'});
HG = histogram(Cat)

輸出:

分類輸入的直方圖

在上面的程式碼中,我們建立了三個變數的分類直方圖。我們為每個變數分配了一個不同的值。例如,我們為變數 Yes 分配了值 7,為變數 No 分配了值 8,為變數 Not Sure 分配了 9。在變數 vector 中將值 7 重複七次,這意味著變數 Yes 將顯示在高度為 7 的直方圖中,依此類推。你可以在直方圖中新增任意多個類別變數。

在 MATLAB 中建立歸一化直方圖

我們可以使用 histogram() 函式中的 Normalization 屬性​​對直方圖進行歸一化。例如,讓我們從隨機數建立直方圖,然後使用 Normalization 屬性​​對其進行歸一化。請參見下面的程式碼。

clc
vector = randn(100,1);
HG = histogram(vector,'Normalization','probability')

輸出:

直方圖歸一化

使用概率歸一化對上述直方圖進行歸一化。你還可以使用其他歸一化,例如計數歸一化。

在 MATLAB 中的同一圖形上繪製多個直方圖

我們還可以使用 hold on 函式在同一圖形上繪製多個直方圖。例如,讓我們在同一張圖上繪製兩個直方圖。請參見下面的程式碼。

vector = randn(100,1);
HG1 = histogram(vector)
hold on
vector = 5+randn(100,1);
HG2 = histogram(vector)

輸出:

繪製多個直方圖

在上面的程式碼中,我們在同一張圖上繪製了兩個直方圖。你可以在同一幅圖上繪製任意多的圖,MATLAB 會自動為它們提供單獨的顏色。你還可以為每個直方圖指定所需的顏色。你還可以使用 legend() 函式將圖例新增到直方圖中,以將它們彼此分開。

在 MATLAB 中儲存直方圖

你可以使用 MATLAB 中的 savefig() 函式儲存直方圖,也可以使用 openfig() 函式載入儲存的直方圖。請參見下面的程式碼。

savefig('Hist.fig');
close gcf
histogram = openfig('Hist.fig');

在上面的程式碼中,Hist 是儲存直方圖的變數。檢視此連結以獲取更多資訊。

MATLAB 中的雙變數直方圖

如果要建立兩個變數的直方圖,則可以使用 histogram2() 函式。例如,讓我們繪製兩個向量的直方圖。請參見下面的程式碼。

vector1 = randn(100,1);
vector2 = randn(100,1);
HG = histogram2(vector1,vector2)

輸出:

二元直方圖

在上面的程式碼中,我們從兩個向量繪製了一個二元直方圖。你還可以使用 colorbar 函式新增顏色條,該函式將根據分倉的高度為直方圖新增顏色。隨著分倉高度的增加,分倉的顏色會從較冷變熱,反之亦然。例如,讓我們在上面的二元直方圖中新增一個顏色條。請參見下面的程式碼。

vector1 = randn(100,1);
vector2 = randn(100,1);
HG = histogram2(vector1,vector2,[12 12],'FaceColor','flat')
colorbar

輸出:

雙變數直方圖顏色條

你也可以使用 view() 函式更改直方圖的檢視。例如,讓我們將上述雙變數直方圖的檢視從 3D 更改為 2D。請參見下面的程式碼。

vector1 = randn(100,1);
vector2 = randn(100,1);
HG = histogram2(vector1,vector2,[12 12],'FaceColor','flat')
colorbar
view(2)

輸出:

二元直方圖檢視

你還可以使用與上述直方圖相同的功能和屬性來更改雙變數直方圖的其他屬性。例如,你可以使用 FaceColor 屬性更改前部顏色,使用 EdgeColor 屬性更改邊緣顏色,使用 NumBins 屬性更改容器的數量,並使用 Normalization 屬性​​進行歸一化,等等。你也可以儲存並使用 savefig()openfig() 函式載入雙變數直方圖。檢視此連結以獲取更多資訊。

作者: 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 Plot