creating 3D mesh for some points in space
72 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
So I have these points, A, B, C, ... in 3D. Their coordinates are denoted by x, y, z. For example point A has these coordinates: if x=2.5 and y=12, then z is 3, and B is x=4, y=3, and z=15; and so on.
So i created three arrays to show my points:
x=[2.5 4 6 18 9]; y=[12 3 7.5 1 10]; z=[3 15 16 8 11.5];
and i want to create a 3D mesh from my points (A, B, ...). There are total of 9 points.
I am able to create plot3 and/or scatter3 but not mesh :(
Ive spent already a full week on this and read many tutorials and such but i just get more confused and dont get it. Please help! Thanks!
lala-
1 Kommentar
Kaixiang Wang
am 30 Jan. 2017
A mesh for only nine points? And z is not a function of x and y? What sort of visual result are you expecting?
Antworten (9)
Parker Hinton
am 26 Mai 2017
Yes all, there is a solution, it has been stated. "Use griddata() or TriScatteredInterp to interpolate a grid of data from your points; then you can create a mesh from that."
0 Kommentare
Azzi Abdelmalek
am 10 Feb. 2013
Bearbeitet: Azzi Abdelmalek
am 10 Feb. 2013
You can't use mesh with your data. You will need more data. for example
x=[2.5 4 6 18 9];
y=[12 3 7.5 1 10];
[X,Y]=meshgrid(x,y)
% and for example
Z=X+Y
mesh(X,Y,Z)
% To understand, to create a mush plot with x=[1 2], and y=[ 10 20], you need
x=1,y=10
x=1,y=20,
x=2,y=10,
x=2,y=20
%to obtain these combinations we use
x=[1 2],
y=[ 10 20]
[X,Y]=meshgrid(x,y)
% find the corresponding z to each point
Z=cos(X+Y) % for example
mesh(X,Y,Z)
Walter Roberson
am 11 Feb. 2013
Use griddata() or TriScatteredInterp to interpolate a grid of data from your points; then you can create a mesh from that.
Or you may wish to create a trimesh() once you have done a triangulation.
0 Kommentare
Bhuvan Varugu
am 14 Apr. 2015
I have the same issue. Please share some knowledge on this if you can?
0 Kommentare
Jaco Verster
am 6 Jul. 2017
I had a similar problem - found a great solution here: https://www.mathworks.com/matlabcentral/fileexchange/8998-surface-fitting-using-gridfit
0 Kommentare
Shivam Anand
am 11 Mai 2022
x=[32 20 67 1 98 34 57 65 24 82 47 55 8 51 13 14 18 30 37 39 10 33 21 26 38 81 83 60 95 22 17 5 72 46 99 52 12 25 96 29 70 85 43 69 19 78 97 31 89 53 2 91 48 71 61 15 36 84 94 50 11 80 6 7 49 74 9 88 40 79 27 68 73 64 63 59 86 23 35 58 45 28 100 42 93 87 16 90 41 66 54 92 77 4 62 76 75 56 3 44];
y=[96 75 24 9 83 49 27 77 3 23 17 31 40 13 7 52 51 21 98 47 64 79 78 91 44 16 15 100 84 99 63 68 70 30 54 76 97 73 33 5 88 8 71 66 62 25 60 42 72 45 18 11 28 59 89 65 10 55 69 81 12 26 20 95 87 41 74 50 93 22 43 90 14 34 82 35 56 38 80 32 1 57 6 36 37 61 29 58 2 48 4 46 67 53 92 86 94 19 39 85];
z=[55 31 11 45 83 36 86 49 15 57 42 46 8 94 88 47 54 81 98 41 32 35 56 85 9 89 37 60 23 62 67 100 78 76 73 80 10 20 68 34 77 93 1 63 53 12 22 99 91 40 84 24 33 3 43 19 92 97 6 82 64 25 26 79 95 4 44 58 5 21 70 29 65 87 96 90 51 14 18 2 72 28 71 39 52 7 27 59 50 61 48 30 66 69 17 13 74 16 75 38];
xlin = linspace(min(x), max(x), 100);
ylin = linspace(min(y), max(y), 100);
[X,Y] = meshgrid(xlin, ylin);
% Z = griddata(x,y,z,X,Y,'natural');
% Z = griddata(x,y,z,X,Y,'cubic');
Z = griddata(x,y,z,X,Y,'v4');
mesh(X,Y,Z)
axis tight; hold on
plot3(x,y,z,'.','MarkerSize',15)

0 Kommentare
Siehe auch
Kategorien
Mehr zu Delaunay Triangulation 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!