lsqcurvefitlsqcurvefit позволяет легко аппроксимировать параметризованные нелинейные функции к данным. Можно также использовать 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)