平滑粗糙的地块

时间:2012-11-09 13:34:01

标签: matlab uniform exponential-distribution

我想在Matlab中绘制一些图。

详细信息:对于 1 类, p(x | c1) x 之间是统一的> [2,4] 参数 a = 1 b = 4 。对于 2 类, p(x | c2)是指数的,参数 lambda = 1 。除了 p(c1)= p(c2)= 0.5 之外,我想画出两个等级密度乘以 P(c1) P( c2)分别为 x 的函数,清楚地显示最佳决策边界(或边界)。

我有解决这个问题的方法,这就是作者所做的(而且我想得到),但是没有Matlab代码,所以我想自己完成所有这些。

IMAGE 1

这就是我画的。

IMAGE 2

这是我写的MATLAB代码。

x=0:1:8;

pc1 = 0.5;
px_given_c1 = exppdf(x,1);
px_given_c2 = unifpdf(x,2,4);

figure;
plot(x,px_given_c1,'g','linewidth',3);
hold on;
plot(x,px_given_c2,'r','linewidth',3);
axis([0 8 0 0.5]);
legend('P(x|c_1)','P(x|c_2)');

figure;
plot(x,px_given_c1.*pc1,'g','linewidth',3);
hold on;
plot(x,px_given_c2.*(1-pc1),'r','linewidth',3);
axis([0 8 0 0.5]);
legend('P(x|c_1)P(c_1)','P(x|c_2)P(c_2)');

正如你所看到的,它们几乎是熟悉的,但我对这种均匀分布有问题,这是用红色绘制的。我怎样才能改变它?

1 个答案:

答案 0 :(得分:4)

您应该将x=0:1:8;更改为x=0:1e-3:8;甚至x=linspace(0,8,1000);,以便更精细地进行绘图。这增加了矢量中的点数(因此线段)Matlab将用于绘图。


说明:在绘图时,Matlab可与线段配合使用!

通过编写x=0:1:8;,您可以创建长度为9的向量[0 1 2 3 4 5 6 7 8],并分别应用exppdfunifpdf,创建两个相同长度的向量,这些向量来自原始向量。所以基本上你得到了矢量[exppdf(0) exppdf(1) ... exppdf(8)][unifpdf(0) unifpdf(1) ... unifpdf(8)]

当你发出plot命令之后,Matlab只绘制线段(在这种情况下其中8个是因为有9个点):

  • (x(1),px_given_c1(1))(x(2),px_given_c1(2))
  • ...
  • (x(8),px_given_c1(8))(x(9),px_given_c1(9))