在 MATLAB 中繪製資料的頻率分佈曲線

Mehak Mubarik 2023年1月30日
  1. 在 MATLAB 中使用 sshist() 函式計算密度估計並獲得我們資料的頻率曲線
  2. 在 MATLAB 中使用 histfit() 函式獲取我們資料的頻率曲線
在 MATLAB 中繪製資料的頻率分佈曲線

我們將研究在 MATLAB 中繪製資料頻率分佈曲線的不同方法。我們將使用不同的示例程式碼和相關輸出來清除你的概念,並使用 MATLAB 為你提供完整的見解。

請注意,MATLAB 允許使用者使用不同的函式執行統計操作,例如 histfit()hist()sshist()

頻率分佈是一個列表/表格/圖表,顯示我們的資料集中某些可能性發生的頻率。我們可以使用 MATLAB 繪製資料的頻率分佈曲線。

我們可以手動新增資料或從 Excel 工作表中匯入資料。使用不同的函式,我們可以很容易地獲得所需的曲線。

在 MATLAB 中使用 sshist() 函式計算密度估計並獲得我們資料的頻率曲線

要在 MATLAB 中繪製頻率分佈圖形曲線,我們首先需要計算直方圖的最佳箱數。

對於我們的核密度估計計算,我們將假設我們的頻率分佈在 MATLAB 中具有直方圖的標準箱長度。

儘管如此,這種方法幾乎可能是不現實的。第一種方法計算最佳 bin 寬度以產生最清晰的曲線,同時儘可能多地保留核心 PDF。

函式 sshist 不包含在 MATLAB 的標準函式列表中,但我們可以獲得函式的原始碼並使用它來執行我們的程式碼來計算 bin 的密度估計。見例子,

Our_data = randn(1,1e4);

optN = sshist(Our_data);

figure(1)
[M,C] = hist(Our_data);
[Nop,Cop] = hist(Our_data,optN);
[f,xi] = ksdensity(Our_data,Cop);

dNom = mode(diff(Center));
dNom = mode(diff(Cop));

plot(Center,N/dNom,'.-',Cop,Nop/dNom,'.-',xi,f*length(Our_data),'.-')
legend('Default','Optimum','ksdensity')
title('Frequency Distribution')

輸出:

頻率圖 1

如上所述,首先要計算 optimal-bin。此計算背後的原因是為我們的頻率分佈直方圖提供結構。

當我們使用 ksdensity 函式時,它返回一個平坦的曲線。因此,這取決於我們工作的性質以及根據我們的資料我們想要的輸出圖的型別。

請注意,我們使用了一個額外的 m 檔案來成功執行此程式碼。函式 sshist() 未在 MATLAB 中預定義。

這就是為什麼我們需要複製這個函式的原始碼,建立一個 m 檔案,並將複製的程式碼貼上到這裡。

然後執行程式碼得到頻率分佈圖。m-file 原始碼的連結是 sshist()

在 MATLAB 中使用 histfit() 函式獲取我們資料的頻率曲線

為了使用 histfit() 構建具有正態分佈擬合的頻率分佈直方圖,讓我們將資料樣本的大小設為 100,方差為 1,平均值為 10。

rng default;
freq_dist_data = normrnd(10,1,120,1);
histfit(freq_dist_data)

輸出:

頻率圖 2

請注意,MATLAB 中的 histfit 函式與 fitdist 函式的工作方式類似,以將我們的頻率分佈擬合到我們的資料集並返回擬閤中使用的所有值。

fitting_values = fitdist(freq_dist_data,'Normal')

輸出:

fitting_values = 

  NormalDistribution

  Normal distribution
       mu = 10.0894   [9.88181, 10.297]
    sigma =  1.1484   [1.01919, 1.31541]
作者: Mehak Mubarik
Mehak Mubarik avatar Mehak Mubarik avatar

Mehak is an electrical engineer, a technical content writer, a team collaborator and a digital marketing enthusiast. She loves sketching and playing table tennis. Nature is what attracts her the most.

LinkedIn