Polyfit 4th degree unexpected behavior

3 次查看(过去 30 天)
I'm getting strange results plotting a 4th degree polynomial.
Here is the resultant graph:
I don't understand why there appear to be 2 lines. The first degree polynomial is just a single line, and 2nd degree and beyond comes up with the two lines like this graph.
The data is a 420x3 matrix attached.
here is the code:
p1=polyfit(tp(:,1),tp(:,2),4); %4th degree polynomial
f=polyval(p1,tp(:,1));
figure(1)
plot(tp(:,1),tp(:,2),'*',tp(:,1),f)

回答(1 个)

Steven Lord
Steven Lord 2020-7-29
It looks to me like tp(:, 1) is not sorted. You can check this with issorted. If it's not sorted, MATLAB may draw a line from around x = 27 back to x = 13 then have to draw a straight line back to x = 25.
Try sorting tp(:, 1) before using it to evaluate the fitted polynomial and before plotting.
  3 个评论
Terence O'Brien
Terence O'Brien 2020-7-29
Awesome, thanks so much.
The data is not sorted. I tried that with sort(tp) yesterday and I end up with this:
So now my data is inverted. I'm sure there is an easy fix... might you have the answer?
Terence O'Brien
Terence O'Brien 2020-7-29
I did try sort(tp,'descend') and it is the same

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by