Hello everyone, how do you fit two curves into a closed curve?My code is as follows.
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
load dataA.mat
%x1=dataA(:,1);
%y1=dataA(:,2);
f1 = fit(xAbove,yAbove,'smoothingspline','SmoothingParam',0.0001);%smoothingspline
%plot(f1,xAbove,yAbove)
plot(f1,'-r')
hold on
load dataB.mat
%x2=dataB(:,1);
%y2=dataB(:,2);
[xx,ind] = sort(xBelow);
yy2 = smooth(xBelow,yBelow,0.5,'rloess');
plot(xx,yy2(ind),'r-')
%f2 = fit(xBelow,yBelow,'smoothingspline','SmoothingParam',1);%smoothingspline
%plot(xBelow,yBelow)
%xBelow(1)=xAbove(1);
%yBelow(end)=yAbove(end);
%hold on
0 Kommentare
Antworten (2)
KSSV
am 20 Jan. 2021
load dataA ;
load dataB ;
C1 = [xAbove yAbove] ;
C2 = [xBelow yBelow] ;
% MErge them
C = [C1 ;C2] ;
idx = boundary(C(:,1),C(:,2)) ;
C = C(idx,:) ;
plot(C(:,1),C(:,2))
6 Kommentare
Raghav Gnanasambandam
am 20 Jan. 2021
I am not sure whether it is actually needed to combine the two curves. I am assuming you just need to find the closed curve for the whole data. Depending on how you want to fit a closed curve, you can use either boundary() or convhull().
load dataA.mat
load dataB.mat
x = [xAbove;xBelow];
y = [yAbove;yBelow];
k = boundary(x,y);
hold on;
plot(x(k),y(k));
You can also refer this https://www.mathworks.com/matlabcentral/answers/269081-closed-curve-fitting-of-scatter-plot-data
or
load dataA.mat
load dataB.mat
x = [xAbove;xBelow];
y = [yAbove;yBelow];
k = convhull(x,y);
hold on;
plot(x(k),y(k));
Hope this helps.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Interpolation 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!