Polyfit 4th degree unexpected behavior

1 view (last 30 days)
Terence O'Brien
Terence O'Brien on 29 Jul 2020
Commented: Terence O'Brien on 29 Jul 2020
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)

Answers (1)

Steven Lord
Steven Lord on 29 Jul 2020
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 Comments
Terence O'Brien
Terence O'Brien on 29 Jul 2020
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 on 29 Jul 2020
I did try sort(tp,'descend') and it is the same

Sign in to comment.

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!