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 является
) + αi.
Код генерирует 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].
При наличии программного обеспечения Toolbox™ статистики и машинного обучения используйте nlparci для формирования доверительных интервалов для ahat оценка.
lsqcurvefit | nlparci (инструментарий для статистики и машинного обучения)