Plot 3d surface using cartesian coordinates

조회 수: 4 (최근 30일)
Krzysztof Majewski
Krzysztof Majewski 2016년 3월 18일
답변: Shivam Anand 2022년 5월 11일
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