作者:桂。
時間:2017-03-10 22:13:36
鏈接:http://www.cnblogs.com/xingshansi/p/6533579.html
聲明:歡迎轉載,不過記得注明出處哦~
前言
本文作為:曲線擬合與分布擬合 一文的補充內容,主要介紹MATLAB直方圖的繪制,以及對應歸一化直方圖的實現。全文分三部分簡單介紹: 1)直方圖(hist)繪制; 2)柵欄圖(bar)繪制; 3)歸一化直方圖實現。 |
一、直方圖(hist)
可以對hist的直方圖進行限定,兩種途徑:個數模式(nbins)/區間模式(numter)
A-個數模式
nbins:指定直方圖區間個數。
給出代碼:
rng('default') % for reproducibility x = 3*randn(3000,1)-2; nbins = 50; hist(x, nbins); grid on;
結果圖:
B-區間模式
numter:[start:interval:end].
給出代碼:
rng('default') % for reproducibility x = 3*randn(3000,1)-2; numter = [-20:.2:20]; hist(x, numter); grid on;
對應結果圖:
此外,hist的輸出結果有兩個(三種方式均可):
[histFreq, histXout]=hist(x); [histFreq, histXout]=hist(x, nbins); [histFreq, histXout]=hist(x, numter);
給出一個演示代碼:
rng('default') % for reproducibility x = 3*randn(3000,1)-2; nbins = 50; [histFreq, histXout]=hist(x, nbins); subplot 311 hist(x,nbins);grid on; subplot 312 plot(histXout,histFreq,'r','linewidth',2); grid on; subplot 313 hist(x,nbins);hold on; plot(histXout,histFreq,'r','linewidth',2); grid on;
對應結果圖:
可以看到,對於結果:[histFreq, histXout] —>histXout:橫坐標;histFreq:縱坐標。
二、柵欄圖(bar)
關於bar,只提及一點,給出代碼:
x = 1900:10:2000; y = [75.995,91.972,105.711,123.203,131.669,... 150.697,179.323,203.212,226.505,249.633,281.422]; figure; subplot 211 bar(y);grid on; subplot 212 bar(x,y);grid on;
結果圖:
即bar可以指定橫軸坐標以及縱軸坐標。
三、歸一化直方圖
借助hist的輸出,以及bar的特性,我們可以生成歸一化直方圖,思路:
- 步驟一:求解每一個bin的區間寬度:binWidth = histXout(2)-histXout(1);
- 步驟二:求解所有bin的面積:binWidth/sum(histFreq)
- 步驟三:求解面積歸一化后的高度(寬度保持不變):histFreq/binWidth/sum(histFreq)
直方圖歸一化的代碼:
rng('default') % for reproducibility x = 3*randn(3000,1)-2; numOfBins = 100; % [histFreq, histXout] = hist(x, numOfBins); numter = [-20:.2:20]; [histFreq, histXout] = hist(x, numter); binWidth = histXout(2)-histXout(1); %Bar figure; subplot 311 bar(histXout, histFreq/binWidth/sum(histFreq)); hold on;grid on;
這樣一來,我們對分布擬合,便可以更直觀地觀察直方圖分布與擬合結果的關系: