Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我需要计算二项式分布的概率质量函数和累积分布函数。我想使用MATLAB来做到这一点(原始MATLAB,没有工具箱)。我可以自己计算这些,但希望使用预定义的函数,但找不到任何函数。那里有东西吗?
function x = homebrew_binomial_pmf(N,p) x = [1]; for i = 1:N x = [0 x]*p + [x 0]*(1-p); end 回答: 您可以使用函数NCHOOSEK来计算二项式系数。这样,您可以创建一个函数,计算给定N和p一组k值的概率质量函数的值: function pmf = binom_dist(N,p,k) nValues = numel(k); pmf = zeros(1,nValues); for i = 1:nValues pmf(i) = nchoosek(N,k(i))*p^k(i)*(1-p)^(Nk(i)); end end 要绘制概率质量函数,请执行以下操作: k = 0:40; pmf = binom_dist(40,0.5,k); plot(k,pmf,'r.'); 累积分布函数可以使用CUMSUM从概率质量函数中找到 : cummDist = cumsum(pmf); plot(k,cummDist,'r.'); 注意:当从NCHOOSEK返回的二项式系数很大时,您可能最终会失去精度。一个非常好的替代方法是在MathWorks文件交换上使用John D'Errico提交的“ 可变精度整数算术” 。通过将数字转换为他的vpi类型,可以避免精度损失。 更多&回答... |
![]() |
![]() |