3d plot from knows XYZ
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, i have known list of numbers:
x = [0 10 20 30 0 10 20 0 10 20 30];
y = [0 0 0 0 15 15 15 15 30 30 30 30];
t = [20 22 25 23 22 27 30 25 19 20 18 22];
I used: [X,Y] = meshgrid(x,y), but i'm struggeling with understanding what to do with those t values.
thank you
0 Kommentare
Antworten (2)
Star Strider
am 26 Feb. 2023
Bearbeitet: Star Strider
am 26 Feb. 2023
It will be necessary to interpolate them to create a surface.
Try something like this —
x = [0 10 20 30 0 10 20 0 10 20 30];
y = [0 0 0 0 15 15 15 15 30 30 30 30];
t = [20 22 25 23 22 27 30 25 19 20 18 22];
Q = [size(x); size(y); size(t)]
y = y(1:numel(x));
t = t(1:numel(x));
xv = linspace(min(x), max(x), numel(x));
yv = linspace(min(y), max(y), numel(y));
[X,Y] = meshgrid(xv,yv);
F = scatteredInterpolant(x(:),y(:),t(:));
T = F(X,Y);
figure
surfc(X, Y, T)
colormap(turbo)
colorbar
xlabel('X')
ylabel('Y')
zlabel('T')
EDIT — Added axis labels.
.
2 Kommentare
Walter Roberson
am 26 Feb. 2023
Note: the duplicate point is because the middle "30" is missing in x, so the 0 of the next x cycle lines up with the 15 of the end of the existing y cycle
0 10 20 0
15 15 15 15
whereas if the 30 had not been missed then it would have been (30,15) for that point instead of a second (0,15)
Star Strider
am 26 Feb. 2023
@Walter Roberson — That is also likely the origin of the vectors not having equal lengths. I just went with the available data.
I’m also assuming that May wants a surf plot because of the meshgrid call.
Devargya chakraborty
am 26 Feb. 2023
first of all, your vectors should be of the same length.
after that you can use the plot3 command to plot the graph or meshgrid also.
plot3(x,y,t);
meshgrid(x,y,t);
0 Kommentare
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots 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!