Подгонка кривой для нелинейных данных

Я пытаюсь уместить некоторые данные, используя lsqcurvefit в MATLAB, но я новичок в этой области.

xdata1 = [0 60 660 1250];
ydata1 = [0 18 23 31]; 

На изображении ниже красная линия - это то, чего я хочу добиться.

красный желательно подходит

Как я могу добиться этого?


person iNecra    schedule 10.10.2018    source источник
comment
Если вы поместите первые две точки на прямую, а затем поместите последние три точки на другую прямую (так, чтобы точка x = 60 находилась в обеих посадках), вы можете переключаться между ними в точке пересечения x = 60 . Этот простой метод, вероятно, даст небольшое внезапное изменение при переходе от одной модели к другой при x = 60.   -  person James Phillips    schedule 11.10.2018


Ответы (1)


Как насчет polyfit ()?

Код здесь:

close all % be careful with following two lines
clear all

x = [0 60 660 1250];
y = [0 18 23 31]; 

p = polyfit(x,y,3);

xx = linspace(x(1), x(end), 100);
yy = polyval(p,xx);

plot(x,y,'o'); hold on; plot(xx,yy)

введите описание изображения здесь

person Marc Lubecke    schedule 10.10.2018
comment
Поскольку два изображения показывают очень разные графики функций, как это отвечает на заданный вопрос? - person James Phillips; 11.10.2018
comment
Привет, Марк, спасибо за ответ! Однако я использовал полифит для первого наброска, и он не подошел достаточно хорошо. Мне понадобится суррогатная функция или две линейные функции, которые можно преобразовать в одну. - person iNecra; 11.10.2018