Fit a curve along points through starting and end point

50 views (last 30 days)
I have some points with each an x and y value. I want to fit a curve somehow along these points, but not necessarily through these points. Except for the starting and endpoint, where the curve has to go through. The point curve looks a bit like sin/cos, so i think a fourier fit would work. How do i get to this, but with fixed start and endpoint?

Accepted Answer

Ameer Hamza
Ameer Hamza on 1 Oct 2020
Use fit(): https://www.mathworks.com/help/curvefit/fit.html and specify the weights for each point
x = % your data points
y = % your data points
weights = [100 ones(1, numel(x)-2), 100]; % give a much higher weight to 1st and last point.
fit(x, y, 'sin8', 'Weights', weights);
sinx fittype series seems suitable for your data.

More Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 1 Oct 2020
Edited: KALYAN ACHARJYA on 1 Oct 2020
You can fit the curve in number od ways, see which tyep perfectly fit as per your expectation
x_data=randi(10,[1,10])';
y_data=randi(10,[1,10])';
plot(x_data,y_data,'ro');
hold on
plot1=fit(x_data,y_data,'exp1');
%..........................^
plot(plot1,x_data,y_data);
Detail MATLAB docs here
If you just want connect the start point and end point only, plot the initail and end points of x and y data
x_data=randi(10,[1,10]);
y_data=randi(10,[1,10]);
plot(x_data,y_data,'ro');
hold on
plot(x_data([1,end]),y_data([1,end]));
  1 Comment
Stefan Lang
Stefan Lang on 1 Oct 2020
Edited: Stefan Lang on 1 Oct 2020
Well this does fit a curve to my data, but the fitted curve does not go through the first and last point. How do i get this? If i have 10 points, the curve has to connect point 1 with point 10, but in between, follow (not exactly, but nearby) point 2 to 9.
So, start exactly at point 1, fit the curve from point 2 to 9, finish exactly at point 10.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!