Максимум подогнанной гауссианы в MATLAB

Мне нужно найти максимум гауссиана, который я подогнал, ниже мой пример кода (не обращайте внимания на тот факт, что он ужасно подходит для гауссиана, это были всего лишь две запасные матрицы, которые я пинал в моем трее переменных)

x=[10;2;6;1;7;5;3;4;8;9];
z1=[0;0;0;0;0;6;7;8;9;10];
cf1=fit(x,z1,'gauss1');
plot(x,z1,'.k')
hold on
plot(cf1,'r')

Любая помощь, которую вы, ребята, могли бы мне дать, будет принята с благодарностью.


person Chris 'Namikaze Kurisu' Fraser    schedule 30.10.2012    source источник
comment
О, я забыл упомянуть, что я должен сделать это без инструмента подгонки кривой, так как мне нужно использовать этот максимум в будущих расчетах.   -  person Chris 'Namikaze Kurisu' Fraser    schedule 30.10.2012


Ответы (1)


Это довольно простая математика. Посмотрите на вывод

>> cf1

cf1 = 
     General model Gauss1:
     cf1(x) =  a1*exp(-((x-b1)/c1)^2)
     Coefficients (with 95% confidence bounds):
       a1 =       5.187  (-0.4711, 10.85)
       b1 =       6.834  (-0.768, 14.44)
       c1 =       5.945  (-8.833, 20.72)

Теперь, вооружившись статьей в Википедии о гауссианах, найти максимум несложно:

maximum_x = cf1.b1;
maximum_y = cf1.a1;

То же самое будет верно для любого другого инструмента, который вы используете для соответствия той же функции - коэффициенты a1 и b1 определяют положения максимума y и x соответственно.

person Rody Oldenhuis    schedule 30.10.2012
comment
Спасибо, я думал, что упустил что-то очень простое. - person Chris 'Namikaze Kurisu' Fraser; 30.10.2012