MATLAB中的三角分布随机变量(PDF和CDF)

问题描述 投票:0回答:2

我在为三角分布绘制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
2个回答
0
投票

我可能会想念一些东西,但是为什么下面的内容不会呢?y = hist(x,100);cdf = cumsum(y);plot(cdf)


0
投票

[使用Probability Distribution Objectsmakedist()makedist()功能,通过统计信息工具箱中的pdf(),这变得非常容易。

方法1:使用概率分布对象(需要统计工具箱)pdf()可从cdf()获得。用cdf()获得probability density function (PDF)

pdf(pd,X)

cumulative distribution function (CDF)


方法2:分析公式您也可以为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') Triangular distribution PDF and CDF

© www.soinside.com 2019 - 2024. All rights reserved.