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
(1) |
Скрипт генерирует xdata
от 100 независимых выборок от экспоненциального распределения со средним значением 2. Это генерирует ydata
от уравнения 1 использование a
= [1;3;2] , встревоженный путем добавления нормальных отклонений со стандартными отклонениями
[0.1;0.5;0.5]
.
Цель состоит в том, чтобы найти параметры , i = 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 default value of the function tolerance.
Видеть получившуюся оценку наименьших квадратов , Введите:
ahat ahat = 1.0169 3.1444 2.1596
Подходящие значения ahat
в 8% a
= [1;3;2] .
Если у вас есть программное обеспечение Statistics and Machine Learning Toolbox™, используйте nlparci
функция, чтобы сгенерировать доверительные интервалы для ahat
оценка.