How do I plot a curve through these points?

I have arrays of x and y values (both of equal length) and plotted the following graph using plot(x,y):
I want to plot smooth curves through these points so that I end up with a bell-shaped curve on top, and a second curve through the points that lie along the bottom.
However when I try to use Basic Fitting to plot a curve, I get the error 'Repeated X values are not permitted when fitting with a cubic interpolating spline. Remove repeated values'.

Answers (1)

You did not include your data (and I do not have the Curve Fitting Toolbox), but the unique function will likely help. You will likely need the first two outputs, something like this:
A = randi(9, 15, 2);
[Au, ia] = unique(A(:,1));
Aplot = A(ia,:);
where ‘A’ has the x-data in column 1, the y-data in column 2, and ‘Aplot’ is the sorted array with unique x-values and the first corresponding y-values the function found.

2 Comments

Guestsaint
Guestsaint on 10 Jan 2016
Edited: Guestsaint on 10 Jan 2016
I used the unique function by adding this to my code:
[x_unique,ind] = unique(x);
y_unique = y(ind);
and then using plot(x_unique,y_unique).
I get the same points plotted as before but now when I try to plot curves through them using Basic Fitting I now get the error 'Matrix is singular to working precision'.
I’m not sure what you’re doing, but one possibility is that you’re attempting to fit a much higher-degree polynomial than your data can approximate. Reduce the order of the polynomial.

Sign in to comment.

Categories

Tags

Asked:

on 10 Jan 2016

Edited:

on 11 Jan 2016

Community Treasure Hunt

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

Start Hunting!