MATLAB: Comment produire un nuage de points avec une ligne lisse pour ce graphique

Vous trouverez ci-joint le fichier capture.png qui montre le tracé lisse souhaité que j’aimerais avoir. FYP Sample Data.PNG est ce que j’ai obtenu à travers les codes ci-dessous, mais j’ai besoin d’un tracé fluide, tout comme celui produit dans Capture.png.
Quelqu’un peut-il guider comment puis-je produire un nuage de points avec des lignes lisses, semblable au Capture.PNG?
Appréciez si quelqu’un peut m’aider. Dieu te bénisse!
 
data = xlsread("sampleexceldata.xlsx") ;
K = data(1,[1 3 5]) ; % factors
data(1,:) = [];
s1 = data(:,1) ; f1 = data(:,2) ;
s2 = data(:,3) ; f2 = data(:,4) ;
s3 = data(:,5) ; f3 = data(:,6) ;
figure
yyaxis right
plot(s3,f3,'g-o',s2,f2,'b-+')
axis ([0 5 0 90])
ylabel('Force (N)');
yyaxis left
plot(s1,f1,'r-*')
axis ([0 5 0 13])
grid on
title('Force vs Displacement');
xlabel('Displacement (mm)');
ylabel('Force (N)');
 

Meilleure réponse

  • Ces lignes lisses sont des interpolations entre les points donnés. Pour que vous obteniez un résultat similaire, ce que vous devez faire est de trouver une interpolation adaptée à vos attentes concernant les données, puis d’interpoler simplement avant de tracer. Un exemple simple peut être vu ci-dessous, où la différence entre une interpolation linéaire (par défaut) et cubique peut être vue.interp1:
     

    x = 1:10;
    y = (-1).^(x);
    xq = 1:0.01:10;
    yq = interp1(x,y,xq,'PCHIP') ;
    figure,plot(x,y,'g-o','linewidth',2)
    hold on,plot(xq,yq,'linewidth',2),plot(xq(1:100:end),yq(1:100:end),'r+','linewidth',2)