3D plot on given X,Y coordinates

22 visualizaciones (últimos 30 días)
Berkay Dürüsel
Berkay Dürüsel el 1 de Mayo de 2018
Respondida: Shivam Anand el 11 de Mayo de 2022
I got X and Y coordinates of a 2D surface. On this coordinates, I need to put data in it and the data is a vector. I want to see the data I gave for every element of the vector, so it should be 3D plotting. Mesh plotting does not help, since z should not be a vector. Note : The data is not corrolated with X and Y.
% code
x = 30;
>> y = 40;
>> [xx,yy] = meshgrid(x,y);
>> zz = InterpolatedTheta %The data I'm using; 1x832 double.
mesh(xx,yy,zz);
surf(xx,yy,zz);
zz =
end
  4 comentarios
John BG
John BG el 1 de Mayo de 2018
what about showing the readers the MATLAB code that you tried with surf?
Berkay Dürüsel
Berkay Dürüsel el 2 de Mayo de 2018
added. Error is: Error using surf (line 71) Z must be a matrix, not a scalar or vector.

Iniciar sesión para comentar.

Respuestas (2)

jonas
jonas el 2 de Mayo de 2018
Editada: jonas el 2 de Mayo de 2018
There are a number of issues with your code, such as wrong type of input for meshgrid and surf.
Assuming that you have three vectors XYZ of equal size (1x832) and you want to plot the scattered data as a surf, the surf function does not support this type of input as Z must be defined on a grid. One way is to solve this is to interpolate your data on a rectangular grid using interp2 and meshgrid. A simpler way is to use something like the non-default function surf_from_scatter (link), which supports XYZ vectors. Or you can just use these two lines of code, which I took directly from the referenced function:
tri = delaunay(x,y);
h = trisurf(tri, x, y, z);
This is of course assuming that you have scattered data, which should have been clear from your question.

Shivam Anand
Shivam Anand el 11 de Mayo de 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)

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by