Прямо сейчас вы просто случайно меняете свои параметры.Если вы перейдете к процедуре оптимизации, подобной той, которая реализована в fminsearch
, этот алгоритм найдет для вас минимум.
% initial parameters
a = 10;
b = 3;
r0 = 0;
c0 = 0;
alpha = 1;
beta = 1;
% Array of parameters
p0 = [a,b,r0,c0,alpha,beta]';
% Minimization of cost function for p
[pars, Jmin] = fminsearch(@(x)Crit_J(x,D), p0);
Вы должны изменить свою функцию Crit_J
только на вывод«стоимость», чтобы минимизировать, чтобы это работало.Затем вы можете позже получить свою модель, запустив оригинальную функцию.
Обновление:
Возможно, вы находите локальный минимум, вы можете попробовать fminunc
вместо fminsearch
или переключиться на универсальный алгоритм , но это может быть излишним для этой проблемы.