Azzera filtri
Azzera filtri

Fit a curve along points through starting and end point

28 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Ameer Hamza
Ameer Hamza il 1 Ott 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.

Più risposte (1)

KALYAN ACHARJYA
KALYAN ACHARJYA il 1 Ott 2020
Modificato: KALYAN ACHARJYA il 1 Ott 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 Commento
Stefan Lang
Stefan Lang il 1 Ott 2020
Modificato: Stefan Lang il 1 Ott 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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by