Effacer les filtres
Effacer les filtres

Plotting a surface from a timetable

5 vues (au cours des 30 derniers jours)
Paul
Paul le 16 Fév 2024
Commenté : Paul le 16 Fév 2024
I've developed a timetable (attached), and I want to make a surface plot from it. I want "Start Time" and "Distance [km]" to be my x and y axes, with "Flow Rate [veh/hr]" as the corresponding output on the z axis. I've tried using plot3, but I'm getting a jumbled mess instead of a smooth surface.

Réponse acceptée

Voss
Voss le 16 Fév 2024
Here's one way:
load data
X = Lane1Data.("Start Time");
Y = Lane1Data.("Distance [km]");
Z = Lane1Data.("Flow Rate [veh/hr]");
I = scatteredInterpolant(hours(X-min(X)),Y,Z);
X_plot = linspace(min(X),max(X),50);
Y_plot = linspace(min(Y),max(Y),50);
[XX,YY] = meshgrid(hours(X_plot-min(X_plot)),Y_plot);
Z_plot = I(XX,YY);
surf(X_plot,Y_plot,Z_plot)
  1 commentaire
Paul
Paul le 16 Fév 2024
Awesome, thanks a lot!

Connectez-vous pour commenter.

Plus de réponses (1)

Fangjun Jiang
Fangjun Jiang le 16 Fév 2024
Modifié(e) : Fangjun Jiang le 16 Fév 2024
when you use plot() or plot3(), the plot connects the data points from the first to the second, till the last. Sometimes this causes bad visual effect.
What you need might be scatter3(), or use plot3(x,y,z,'.') which means just show the data points but not to connect the data points.

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by