如何在matlab中生成概率单纯形的点?

时间:2015-02-12 16:49:49

标签: matlab plot

编辑:我想生成点(x,y),使得x + y <= 1。

[x,y] = meshgrid(0:.05:1, 0:.05:1);

是否可以使用上述结果的输出来生成(x,y),使得x + y <= 1。

你可以忽略下面的内容。我对我的要求感到困惑:) 以前: 我想绘制Dirichlet分布的密度函数,用于三维空间中概率单纯形的点,即p =(p1,p2,p3),p1 + p2 + p3 = 1.分布由

f(p1,p2,p3)= c * p1 ^(a1)* p2 ^(a2)* p3 ^(a3)

其中c是固定的归一化常数。任何帮助表示赞赏。

注意:p1 + p2 + p3 = 1使得p1> 0,p2> 0p3> 0是3维的平面,因此是2维。因此,可以在此空间上绘制函数。

2 个答案:

答案 0 :(得分:0)

设y = f(p1,p2,p3)。由于p3 = 1 - p1 - p2,我们只需绘制y = f(p1,p2),这是一个二维函数。这个“2.5D”图可以用MATLAB函数mesh()或surf()绘制。

如果存在类似p1 + p2&lt;的限制的情况。 1,只需使y = 0或NaN代表p1 + p2> = 1.只需尝试找到使图表更漂亮的内容。

答案 1 :(得分:0)

  

我想生成点(x,y),使得x + y <= 1。

你的行

[x,y] = meshgrid(0:.05:1, 0:.05:1);

是一个好的开始。只留下选择满足条件的网格点。为此,您使用logical indexing

ind = x+y<=1;
x = x(ind);
y = y(ind);

您可以将这些点绘制为支票:

plot(x,y,'.')
axis square

enter image description here