簡體   English   中英

Matlab將泊松函數擬合到直方圖

[英]Matlab fit poisson function to histogram

我試圖在Matlab中將Poisson函數擬合為直方圖:該示例要求使用hist()(已棄用),因此我想改用histogram(),尤其是因為您似乎無法規范化hist()。 然后,我想使用poisspdf()或任何其他標准函數(最好沒有工具箱!)對其應用泊松函數。 直方圖是按概率縮放的,這是泊松函數問題出自AFAIK的地方。

clear
clc

lambda = 5;
range = 1000;
rangeVec = 1:range;

randomData = poissrnd(lambda, 1, range);
histoFigure = histogram(randomData, 'Normalization', 'probability');
hold on

poissonFunction = poisspdf(randomData, lambda);
poissonFunction2 = poisspdf(histoFigure, lambda);

plot(poissonFunction)
plot(poissonFunction2)

我嘗試了多種創建泊松函數+繪圖的方法,但它們似乎都不起作用:該函數中的值與直方圖值不一致,因為它們相差幾個小數位。

這是圖像的外觀

例

但是目前,我只能使條形圖正確顯示。

您沒有指定曲線的x數據。 然后使用樣本編號,由於您有1000個樣本,因此得到了難看的圖。 您使用的x數據是randomData 使用

plot(randomData, poissonFunction)

會導致不同樣本之間出現線條,因為樣本彼此隨機跟隨。 要只采樣一次,可以使用unique x和y值保持相互連接很重要,因此最好將randomDatapoissonFunction放在1個矩陣中,然后使用unique

d = [randomData;poissonFunction].';     % make 1000x2 matrix to find unique among rows
d = unique(d,'rows');

您可以使用d繪制數據。

完整代碼:

clear
clc

lambda = 5;
range = 1000;
rangeVec = 1:range;

randomData = poissrnd(lambda, 1, range);
histoFigure = histogram(randomData, 'Normalization', 'probability');
hold on

poissonFunction = poisspdf(randomData, lambda);

d = [randomData; poissonFunction].';
d = unique(d, 'rows');
plot(d(:,1), d(:,2))

結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM