Нелинейный Curve Fitting с 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

ydatai=a1+a2exp(a3xdatai)+εi.(1)

Скрипт генерирует xdata от 100 независимых выборок от экспоненциального распределения со средним значением 2. Это генерирует ydata от уравнения 1 использование a = [1;3;2], встревоженный путем добавления нормальных отклонений со стандартными отклонениями [0.1;0.5;0.5].

Цель состоит в том, чтобы найти параметры a^i, 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.

Видеть получившуюся оценку наименьших квадратов a^, Введите:

ahat

ahat =
    1.0169
    3.1444
    2.1596

Подходящие значения ahat в 8% a = [1;3;2].

Если у вас есть программное обеспечение Statistics and Machine Learning Toolbox™, используйте функцию nlparci, чтобы сгенерировать доверительные интервалы для оценки ahat.

Смотрите также

|

Похожие темы