我想在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代码,所以我想自己完成所有这些。
这就是我画的。
这是我写的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)');
正如你所看到的,它们几乎是熟悉的,但我对这种均匀分布有问题,这是用红色绘制的。我怎样才能改变它?
答案 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]
,并分别应用exppdf
和unifpdf
,创建两个相同长度的向量,这些向量来自原始向量。所以基本上你得到了矢量[exppdf(0) exppdf(1) ... exppdf(8)]
和[unifpdf(0) unifpdf(1) ... unifpdf(8)]
。
当你发出plot
命令之后,Matlab只绘制线段(在这种情况下其中8个是因为有9个点):