Сглаживание неровных участков

Я хочу нарисовать несколько сюжетов в Matlab.

Детали: Для класса 1p(x|c1) равномерно для x между [2, 4] с параметрами a = 1 и b = 4. Для класса 2p(x|c2) экспоненциально с параметром lambda = 1. Помимо p(c1) = p(c2) = 0,5, я хотел бы нарисовать набросок двух плотностей классов, умноженных на P(c1) и P(c2) соответственно, в зависимости от x, четко показывая границу оптимального решения (или границы).

У меня есть решение этой проблемы, это то, что автор сделал (и я хочу получить), но нет кода Matlab, поэтому я хочу сделать все это сам.

ИЗОБРАЖЕНИЕ 1

И это то, что я нарисовал.

ИЗОБРАЖЕНИЕ 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 ответ

Решение

Вы должны вероятно изменить x=0:1:8; что-то вроде x=0:1e-3:8; или даже x=linspace(0,8,1000); иметь более тонкую прорисовку. Это увеличивает количество точек в векторах (и, следовательно, отрезках), которые Matlab будет использовать для построения графика.


Объяснение: Matlab работает с отрезками при построении графиков!

Письменно x=0:1:8; Вы создаете вектор [0 1 2 3 4 5 6 7 8] это имеет длину 9, и, применяя exppdf а также unifpdf соответственно вы создаете два вектора одинаковой длины, полученных из исходного вектора. Так что в основном вы получаете векторы [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)).
Другие вопросы по тегам