Matlab 粗图的平滑处理

Matlab 粗图的平滑处理,matlab,uniform,exponential-distribution,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代码,所以我想自己做 这是我画的 这是我写的MATLAB代码 x=0:1:8; pc1 = 0.5

我想在Matlab中画一些图

详细信息:对于类1p(x | c1)对于x[2,4]之间是一致的,参数为a=1b=4。对于类2p(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)');

正如你们所看到的,他们几乎是笑脸,但我对这个均匀分布有问题,它是用红色画的。我如何更改它?

您可能应该更改
x=0:1:8类似于
x=0:1e-3:8
或甚至
x=linspace(0,81000)以进行更精细的打印。这增加了Matlab用于绘图的向量(以及线段)中的点数


说明:当Matlab进行绘图时,它可以处理线段

通过写入
x=0:1:8
创建长度为9的向量
[0 1 2 3 4 5 6 7 8]
,分别应用
exppdf
unifpdf
创建从原始向量派生的长度相同的两个向量。所以基本上你可以得到向量
[exppdf(0)exppdf(1)…exppdf(8)]
[uniffd(0)uniffd(1)…uniffd(8)]

之后发出
plot
命令时,Matlab仅绘制线段(本例中为8条,因为有9个点):

  • (x(1),px_给定的c1(1))(x(2),px_给定的c1(2))
  • (x(8),px_给定的c1(8))(x(9),px_给定的c1(9))

非常感谢您!它确实有用!但是你能解释一下为什么这个简单的代码会改变一切吗?@muratrat我已经解释过了!但是,x=0:1:8,不创建向量x=[01 2 3 4 5 6 7 8]?你的意思是说
x=0:1:8
没有创建
x=[01 2 3 4 5 6 7 8 9]
。。。你是对的;我犯了一个错误,现在已经纠正了!是的,好的,很抱歉打扰你,我几乎意识到了这个错误,但正如我所说的,我对编码太陌生了,所以我认为有一个功能我不知道。非常感谢你的帮助。