编辑:我想生成点(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维。因此,可以在此空间上绘制函数。
答案 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