2013-06-01 4 views
0

Добрый день,Нелинейная модель Fit

Я получил следующий код в Matlab:

ds1 = 

    2.0709 -3.0379 
    3.1447 -1.4320 
    4.0650 -2.5355 

modelfun = @(b,w)(b(1)*10.^w+b(2)); 

beta0 = [1 1]; 

mdl = NonLinearModel.fit(ds1,modelfun,beta0); 

Я пытаюсь создать NonLinearModel прилегание к уравнению: у = бета (1) * 10^(ж) + бета (2), однако я в конечном итоге со следующей ошибкой:

ошибок с помощью NonLinearModel.fit (строка 837) определение модели и начальные значения для коэффициентов модели должны быть обеспечены.

Любые идеи?

ответ

1

Требуется ли эта модель? Я не уверен, что это будет мой первый выбор.

Начните с печати данных. (Не так ли?) Простой полином второго порядка будет точным подгоном, так как у вас есть три очка.

y = c0 + c1*x + c2*x^2 

Или может быть сделано преобразование путем взятия базы 10 log с обеих сторон будет работать лучше для вас.

Здесь нет необходимости в нелинейной модели. Но если вам это нужно, общеизвестно, что для нелинейных решений нужна исходная точка. Они пытаются перейти к истинному решению, если оно есть, итеративно.

может не быть решением, или вы можете выбрать плохую отправную точку, или размер шага может быть слишком мал, чтобы закончить вовремя или слишком большой, и шаг по правилу по вашему желанию.

Все это то, что делает нелинейные проблемы намного сложнее, чем линейные.

+0

Спасибо, я преобразовал свои данные и p = polyfit (w1, y1,1); отлично работает! – Pietair

Смежные вопросы