как вы можете видеть в заголовке, у меня есть некоторые проблемы с моим кодом в Matlab. Я должен подогнать гауссову кривую к заданным данным, но в результате моя кривая подгонки не так хороша ...
Мой код выглядит так:
Data= [3 24 4 11 18 6 12 7 16 3 28 8 6 9 25 26 20 8 34 30 35 17 30 21 26 29 27 57 58 51 62 57 76 65 76 104 87 99 108 112 117 127 174 147 155 166 185 213 208 206 238 224 255 232 232 255 255 254 255 255 255 255 255 255 255 255 255 255 226 215 235 238 211 172 208 188 181 151 143 129 132 116 119 112 93 96 99 66 68 53 65 43 64 30 51 26 33 41 23 25 15 25 27 23 24 26 20 11 10 23 17 10 4 14 23 20 2 25 3 14 11]; %in uint8
xdata = 1:length(Data);
ydata = double(Data);
plot(xdata,ydata);
hold on
mu = mean(ydata);
sig = std(ydata);
x=[mu sig];
F=lsqcurvefit(@Gauss,x,xdata,ydata);
yFitted = Gauss(F, xdata);
plot(xdata, yFitted)
Функция, которой я являюсь Использование сохраняется в m-файле (Gauss.m)
function G= myfun(x,ydata)
mu = x(1);
sig = x(2);
G=1/(sig*(sqrt(2*pi)))*exp(((-1/2)*((ydata-mu)/sig).^2));
end
В результате мой график выглядит так:
https://gyazo.com/7c8b8e6bc5e108731be2ac694db8d0a7
но это должно выглядеть примерно так, например:
https://gyazo.com/db9d44622a61d64df9e675c38b358a4b
Надеюсь, вы, ребята, можете помочь мне найти мою ошибку:)