plot smooth curve through discreet points

1 Ansicht (letzte 30 Tage)
Reginald
Reginald am 20 Jan. 2015
I have discreet data for x=[38.7330 -19.2503 -50.7264 -65.8133 -71.4051 104.5372 51.8456 24.5807 12.5377 8.4663 -8.4663 -12.5377 -24.5807 -51.8456 -104.5372 71.4051 65.8133 50.7264 19.2503 -38.7330]; and y=[-0.5000 -0.4375 -0.3750 -0.3125 -0.2500 -0.2500 -0.1875 -0.1250 -0.0625 0 0 0.0625 0.1250 0.1875 0.2500 0.2500 0.3125 0.3750 0.4375 0.5000];
when I plot for x and y the curve is not smooth How to make the plot smooth curve passing through points and maintaining the shape

Akzeptierte Antwort

Thorsten
Thorsten am 21 Jan. 2015
Bearbeitet: Thorsten am 21 Jan. 2015
First you have to interpolate x depending on y. Next, you have to do the interpolation separately for each of the discontinuous segments. Since the function has discontinuities after every 5 data points, we don't have to figure out the discontinuities but interpolated every set of 5 points separately (the xi_end, yi_end denote the last data point of the previous segment to plot the horizontal lines):
ind0 = 1:5; xi_end = NaN; yi_end= NaN;
for i = 1:numel(y)/numel(ind0)
ind = ind0 + 5*(i-1);
yi = linspace(y(ind(1)), y(ind(end)));
xi = interp1(y(ind), x(ind), yi, 'spline');
plot([xi_end xi], [yi_end yi])
hold on
xi_end = xi(end);
yi_end = yi(end);
end
  1 Kommentar
Reginald
Reginald am 22 Jan. 2015
Perfect the above code works Thank you Thorsten

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Alessandro Masullo
Alessandro Masullo am 20 Jan. 2015
xx = linspace(min(x),max(x),100); yy = spline(x,y,xx); figure,plot(x,y,'o',xx,yy)
  1 Kommentar
Nor Affendy Yahya
Nor Affendy Yahya am 1 Aug. 2018
this is the most simple n elegant solution. Thanks appreciated so much

Melden Sie sich an, um zu kommentieren.


Reginald
Reginald am 21 Jan. 2015

This is the original plot with x and y

This plot is with above code totally different. As I know microsoft excel can plot smooth plots in scatter plot with line. Is it not possible to apply the same algorithm in matlab ?

Kategorien

Mehr zu Smoothing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by