Гауссовское соответствие с lsqcurvefit в Matlab - PullRequest
0 голосов
/ 23 марта 2020

как вы можете видеть в заголовке, у меня есть некоторые проблемы с моим кодом в 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

Надеюсь, вы, ребята, можете помочь мне найти мою ошибку:)

...