Matlab将泊松函数拟合到直方图
Matlab fit poisson function to histogram
我正在尝试将泊松函数拟合到 Matlab 中的直方图:该示例要求使用 hist()(已弃用),因此我想改用 histogram(),尤其是当您似乎无法标准化 a历史()。然后我想使用 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-data 您的曲线。然后使用样本编号,因为你有 1000 个样本,所以你得到了丑陋的情节。您使用的 x-data 是 randomData
。使用
plot(randomData, poissonFunction)
会导致不同样本之间出现线条,因为样本是随机跟随的。要每个样本只取一次,您可以使用 unique
。重要的是 x 和 y 值保持相互连接,所以最好将 randomData
和 poissonFunction
放在 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))
结果为:
我正在尝试将泊松函数拟合到 Matlab 中的直方图:该示例要求使用 hist()(已弃用),因此我想改用 histogram(),尤其是当您似乎无法标准化 a历史()。然后我想使用 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-data 您的曲线。然后使用样本编号,因为你有 1000 个样本,所以你得到了丑陋的情节。您使用的 x-data 是 randomData
。使用
plot(randomData, poissonFunction)
会导致不同样本之间出现线条,因为样本是随机跟随的。要每个样本只取一次,您可以使用 unique
。重要的是 x 和 y 值保持相互连接,所以最好将 randomData
和 poissonFunction
放在 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))
结果为: