подгонка данных в конкретном уравнении - Matlab

У меня есть 3 набора данных: xdata, ydata и error_ydata.

Мне нужно подогнать эти данные в соответствии с уравнением, подобным этому:

y_fit = c1*sin((2*pi*x_data)/c2 - c3) + c4

где c — константы, и параметры, которые необходимо найти.

Я пробовал несколько функций Matlab, таких как fittype или lsqcurvefit, но они требуют очень близких начальных оценок для работы 4 констант. Задача состояла в том, чтобы найти эти константы, какими бы ни были начальные оценки, которые вы даете.

Любая идея?

Заранее спасибо. Мои наилучшие пожелания


person faeriewhisper    schedule 15.05.2013    source источник
comment
Это должно быть очень просто, используя инструмент для подгонки кривой Matlab. ты пробовал это? вы можете применить свою собственную функцию и выбрать метод.   -  person NKN    schedule 16.05.2013


Ответы (1)


Извините, но дело в том, что нелинейная оценка требует как минимум приличных начальных значений. Если вы не можете потрудиться предоставить их, то ожидайте, по крайней мере, какое-то время случайной чепухи для результатов.

Требуют ли эти инструменты ОЧЕНЬ близких оценок? ИМХО вряд ли, но определение "очень" очень субъективно. Возможно, вам нужно больше узнать об оптимизации и инструментах, которые вы будете использовать. Как только вы это сделаете, вы начнете понимать, как заставить их работать лучше. Рабочий, который не разбирается в своих инструментах, должен ожидать частых травм.

Вы могли бы немного почитать. Здесь можно начать.

СУЩЕСТВУЮТ некоторые инструменты, которые позволяют уменьшить проблему, используя метод разделенных наименьших квадратов. fminspleas — один из них. (Вы также можете найти просьбы в файле советов и рекомендаций по оптимизации.). Но чтобы использовать этот инструмент, вам нужно кое-что узнать о его методологии оценки, понять, как он разбивает параметры на два класса. Опять же, разберитесь со своими инструментами.

person Community    schedule 15.05.2013
comment
Привет! Благодарю за ваш ответ. Я, конечно, знаю, что если я дам установщику значения, далекие от реальных, потребуется некоторое время, чтобы дать мне правильные, но меня это не волнует, я просто хочу, чтобы он их нашел. - person faeriewhisper; 16.05.2013