3D plot on given X,Y coordinates

16 次查看(过去 30 天)
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 个评论
John BG
John BG 2018-5-1
what about showing the readers the MATLAB code that you tried with surf?
Berkay Dürüsel
Berkay Dürüsel 2018-5-2
added. Error is: Error using surf (line 71) Z must be a matrix, not a scalar or vector.

请先登录,再进行评论。

回答(2 个)

jonas
jonas 2018-5-2
编辑:jonas 2018-5-2
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 2022-5-11
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)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by