Plot 3d surface using cartesian coordinates
15 views (last 30 days)
Show older comments
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?
0 Comments
Answers (2)
Star Strider
on 18 Mar 2016
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.
0 Comments
Shivam Anand
on 11 May 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 Comments
See Also
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!