lsqcurvefit
lsqcurvefit
позволяет легко аппроксимировать параметризованные нелинейные функции к данным. Можно также использовать lsqnonlin
; lsqcurvefit
это просто удобный способ позвонить lsqnonlin
для аппроксимирования кривыми.
В этом примере вектор xdata
представляет 100 точек данных и вектор ydata
представляет связанные измерения. Сгенерируйте данные для задачи.
rng(5489,'twister') % reproducible xdata = -2*log(rand(100,1)); ydata = (ones(100,1) + .1*randn(100,1)) + (3*ones(100,1)+... 0.5*randn(100,1)).*exp((-(2*ones(100,1)+... .5*randn(100,1))).*xdata);
Смоделированная связь между xdata
и ydata
является
Код генерирует xdata
из 100 независимых выборок экспоненциального распределения со средним 2. Код генерирует ydata
из своего определяющего уравнения используя a = [1;3;2]
, возмущается добавлением нормальных отклонений со стандартными отклонениями [0.1;0.5;0.5]
.
Цель - найти параметры , = 1, 2, 3, для модели, которая наилучшим образом соответствует данным.
Для порядка параметров данным с помощью lsqcurvefit
необходимо задать функцию аппроксимации. Определите функцию аппроксимации predicted
как анонимная функция.
predicted = @(a,xdata) a(1)*ones(100,1)+a(2)*exp(-a(3)*xdata);
Чтобы подогнать модель к данным, lsqcurvefit
нужна начальная оценка a0
параметров.
a0 = [2;2;2];
Функции lsqcurvefit
чтобы найти оптимальные параметры .
[ahat,resnorm,residual,exitflag,output,lambda,jacobian] =...
lsqcurvefit(predicted,a0,xdata,ydata);
Local minimum possible. lsqcurvefit stopped because the final change in the sum of squares relative to its initial value is less than the value of the function tolerance.
Исследуйте полученные параметры.
disp(ahat)
1.0169 3.1444 2.1596
Подгоняемые значения ahat
находятся в пределах 8% от a = [1;3;2]
.
Если у вас есть программное обеспечение Statistics and Machine Learning Toolbox™, используйте nlparci
функция для генерации доверительных интервалов для ahat
оценка.
lsqcurvefit
| nlparci
(Statistics and Machine Learning Toolbox)