Plot 3d surface using cartesian coordinates

15 次查看(过去 30 天)
I want to plot a surface like this one using cartesian cooridnates:
Those are my coordinates:
x=[0.6, 0.7, 0.4, 0.3, 10.0, 10.6, 10.7, 10.7, 20.6, ...]; %1x28
y=[0.3, 10.0, 20.4, 30.0, 0.0, 10.6, 20.2, 30.5, 0.6, ...]; %1x28
z=[-9.3, 3.3, -38.1, -11.6, -11.7, -12.5, -28.0, -73.1, ...]; %1x28
I've tried this code but I did not get right result:
[X,Y] = meshgrid(x,y);
Z = griddata(x,y,z, X, Y);
figure;
surf(X,Y,Z);
What is the best way to plot this surface?

回答(2 个)

Star Strider
Star Strider 2016-3-18
If you want to interpolate to a finer grid, you have to give it a finer grid to interpolate. You actually did not do any interpolation.
See if this does what you want:
x=[0.6, 0.7, 0.4, 0.3, 10.0, 10.6, 10.7, 10.7]; %1x28
y=[0.3, 10.0, 20.4, 30.0, 0.0, 10.6, 20.2, 30.5,]; %1x28
z=[-9.3, 3.3, -38.1, -11.6, -11.7, -12.5, -28.0, -73.1]; %1x28
xq = linspace(min(x), max (x));
yq = linspace(min(y), max (y));
[X,Y] = meshgrid(xq,yq);
Z = griddata(x,y,z, X, Y, 'cubic');
figure;
surf(X,Y,Z);
grid on
Experiment with the ‘method’ to get the result you want.

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