3D Plotting in MATLAB
2 views (last 30 days)
Show older comments
How do I create a 3D surface plot of this data
Voltage 9
x 19 20 21 21 21 21 20 20 20 20 18
y 0 10 30 50 70 90 110 120 140 160 180
z 9 9 9 9 9 9 9 9 9 9 9
Voltage 8
x 37 38 38 38 37 37 36 38 37 35 35
y 0 10 30 50 70 90 110 120 140 160 180
z 8 8 8 8 8 8 8 8 8 8 8
Voltage 7
x 58 57 57 57 57 56 57 56 55 56 55
y 0 10 30 50 70 90 110 120 140 160 180
z 7 7 7 7 7 7 7 7 7 7 7
Voltage 6
x 77 78 77 77 77 77 77 78 76 76 76
y 0 10 30 50 70 90 110 120 140 160 180
z 7 7 7 7 7 7 7 7 7 7 7
Voltage 5
x 97 98 97 98 96 96 96 95 95 95 95
y 0 10 30 50 70 90 110 120 140 160 180
z 5 5 5 5 5 5 5 5 5 5 5
Voltage 3
x 137 137 138 139 139 140 140 139 139 140 140
y 0 10 30 50 70 90 110 120 140 160 180
z 3 3 3 3 3 3 3 3 3 3 3
Voltage 1
x 180 180 179 178 178 180 180 180 179 181 181
y 0 10 30 50 70 90 110 120 140 160 180
z 1 1 1 1 1 1 1 1 1 1 1
5 Comments
Star Strider
on 9 Oct 2019
For what it’s worth —
% Voltage 9
x9 = [ 19 20 21 21 21 21 20 20 20 20 18 ];
y9 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z9 = [ 9 9 9 9 9 9 9 9 9 9 9 ];
% Voltage 8
x8 = [ 37 38 38 38 37 37 36 38 37 35 35 ];
y8 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z8 = [ 8 8 8 8 8 8 8 8 8 8 8 ];
% Voltage 7
x7 = [ 58 57 57 57 57 56 57 56 55 56 55 ];
y7 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z7 = [ 7 7 7 7 7 7 7 7 7 7 7 ];
% Voltage 6
x6 = [ 77 78 77 77 77 77 77 78 76 76 76 ];
y6 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z6 = [ 7 7 7 7 7 7 7 7 7 7 7 ]; % <— Should These Be ‘6’?
% Voltage 5
x5 = [ 97 98 97 98 96 96 96 95 95 95 95 ];
y5 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z5 = [ 5 5 5 5 5 5 5 5 5 5 5 ];
% Voltage 3
x3 = [ 137 137 138 139 139 140 140 139 139 140 140 ];
y3 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z3 = [ 3 3 3 3 3 3 3 3 3 3 3 ];
% Voltage 1
x1 =[ 180 180 179 178 178 180 180 180 179 181 181 ];
y1 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
z1 = [ 1 1 1 1 1 1 1 1 1 1 1 ];
X = [x1; x3; x6; x7; x8; x9];
Y = [y1; y3; y6; y7; y8; y9];
Z = [z1; z3; z6; z7; z8; z9];
figure
surf(X, Y, Z)
grid on
xlabel('X')
ylabel('Y')
zlabel('Z')
view(30,30)

Answers (1)
darova
on 6 Oct 2019
Use plot3()
% Voltage 9
x9 = [ 19 20 21 21 21 21 20 20 20 20 18 ];
y9 = [ 0 10 30 50 70 90 110 120 140 160 180 ];
%% ---------
% Voltage 1
x1 = [ 180 180 179 178 178 180 180 180 179 181 181];
y1 = [ 0 10 30 50 70 90 110 120 140 160 180];
x = [x9 x8 x7 x6 x5 x3 x1];
y = [y9 y8 y7 y6 y5 y3 y1];
z = [x9*0+9 x8*0+8 x7*0+7 x6*0+6 x5*0+5 x3*0+3 x1*0+1];
plot3(x,y,z,'.r')
Or you can use griddata
xx = linspace(min(x),max(x),20);
yy = linspace(min(y),max(y),20);
[X,Y] = meshgrid(xx,yy);
Z = griddata(x,y,z,X,Y);
surf(X,Y,Z)
4 Comments
Walter Roberson
on 7 Oct 2019
x = [18 19 20 20 20 20 20 21 21 21 21 35 35 36 37 37 37 37 38 38 38 38 55 55 56 56 56 57 57 57 57 57 58 76 76 76 77 77 77 77 77 77 78 95 95 95 95 96 96 96 97 97 98 98 137 137 138 139 139 139 139 140 140 140 140 178 178 179 179 180 180 180 180 180 181 181 ];
y = [180 0 10 110 120 140 160 30 50 70 90 160 180 110 0 70 90 140 10 30 50 120 140 180 90 120 160 10 30 50 70 110 0 140 160 180 0 30 50 70 90 110 120 120 140 160 180 70 90 110 0 30 10 50 0 10 30 50 70 120 140 90 110 160 180 50 70 30 140 0 10 90 110 120 160 180 ];
z = [9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 1 1 ];
xx = linspace(min(x),max(x),20);
yy = linspace(min(y),max(y),20);
[X,Y] = meshgrid(xx,yy);
Z = griddata(x,y,z,X,Y);
surf(X,Y,Z, 'edgecolor', 'none')
See Also
Categories
Find more on Inertias and Loads in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!