【问题标题】:Triangular distributed random variates (PDF and CDF) in MATLABMATLAB 中的三角分布随机变量(PDF 和 CDF)
【发布时间】:2012-08-11 11:06:29
【问题描述】:

我在绘制三角形分布的 CDF 时遇到了一些错误;我可以使用Generating a Triangular distribution in MATLAB 绘制直方图,但是如何绘制 CDF?

n = 10000; %Random number 
a = 0.26; %Min 
b = 0.46; %Max
c = 0.35; %Mode 
u = rand(n, 1); 
x = zeros(n, 1);
for i = 1:n   
    U = u(i);   
    if U < (c-a)/(b-a);    
        X = a + sqrt(U*(b-a)*(c-a)); 
    else       
        X = b - sqrt((1-U)*(b-a)*(b-c));  
    end    
    x(i) = X; 
end 
hist(x,100)

if a <= x && a <=c
  cdf = (x-a)^2/12
elseif c <= x && x <= b
  cdf = 1-(b-x)^2/4
end

if 0 <= p && p <= 0.75
  INV = a+2*sqrt(3*p);
elseif 0.75 <= p && p <= 1
  INV = b-2*sqrt(1-p)
end

【问题讨论】:

    标签: matlab plot probability-density cdf probability-distribution


    【解决方案1】:

    我可能会错过一些东西,但是为什么以下内容不会呢? y=hist(x,100); cdf=cumsum(y); 绘图(cdf)

    【讨论】:

      【解决方案2】:

      在统计工具箱中使用Probability Distribution Objects 使用makedist()pdf()cdf() 函数可以显着简化此操作。

      方法 1:使用概率分布对象(需要 Statistics Toolbox)
      probability density function (PDF) 可从pdf(pd,X) 获得。 cumulative distribution function (CDF) 是通过cdf(pd,X) 获得的。

      % MATLAB R2019a
      % Setup
      a = 0;   % lowerbound
      m = 5;   % mode 
      b = 12;  % upperbound
      pd = makedist('Triangular',a,m,b)     % Create probability distribution object
      
      X = a:0.1:b;                          % domain of X   (useful for plotting)
      
      figure
      s(1) = subplot(1,2,1)
          plot(X,pdf(pd,X))
      s(2) = subplot(1,2,2)
          plot(X,cdf(pd,X))
      sgtitle('X ~ Triangular(a,m,b)')
      
      ylabel(s(1),'PDF')
      ylabel(s(2),'CDF')
      


      方法 2:分析公式
      您还可以使用Triangular distribution 的已知分析公式(封闭形式)并直接绘制PDFCDF

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-27
        • 1970-01-01
        • 2015-02-03
        • 2017-06-21
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        相关资源
        最近更新 更多