MATLAB: Lines on 3D surface plot

3d plotlines

Hello, I have the following example (see below) of a data that I am using to plot a 3D surface. What I would like to do is to show on my surface the intersection lines of horizontal planes parallel to xy plane with my surface. These parallel planes could be for example at z= 210, z=220, z=230, z=240 etc (intervals could be regular or not). Could you please let me know whether I can do this and how? The data and what I have done so far is here:
X =[
0 0 0 0 0 0 0 0 0 0
0.0357 0.0357 0.0358 0.0358 0.0359 0.0359 0.0359 0.0360 0.0360 0.0360
0.0714 0.0715 0.0716 0.0716 0.0717 0.0718 0.0719 0.0719 0.0720 0.0721
0.1071 0.1072 0.1074 0.1075 0.1076 0.1077 0.1078 0.1079 0.1080 0.1081
0.1429 0.1430 0.1431 0.1433 0.1434 0.1436 0.1437 0.1439 0.1440 0.1441];
Y=[
3.5714 3.5750 3.5786 3.5821 3.5857 3.5893 3.5929 3.5964 3.6000 3.6036
3.5357 3.5392 3.5428 3.5463 3.5499 3.5534 3.5569 3.5605 3.5640 3.5675
3.5000 3.5035 3.5070 3.5105 3.5140 3.5175 3.5210 3.5245 3.5280 3.5315
3.4643 3.4677 3.4712 3.4747 3.4781 3.4816 3.4851 3.4885 3.4920 3.4955
3.4286 3.4320 3.4354 3.4389 3.4423 3.4457 3.4491 3.4526 3.4560 3.4594];
Z =[
276.7398 270.9391 265.1383 259.3376 253.5368 247.7361 241.9354 236.1346 230.3339 224.5331
272.3587 266.5536 260.7484 254.9433 249.1382 243.3331 237.5279 231.7228 225.9177 220.2644
267.9776 262.1680 256.3585 250.5490 244.7395 238.9300 233.1205 227.3110 221.5015 216.3515
263.5964 257.7825 251.9686 246.1548 240.3409 234.5270 228.7131 222.8992 217.0853 212.4386
259.2153 253.3970 247.5788 241.7605 235.9422 230.1240 224.3057 218.4874 212.6691 208.5257];
figure
surf(X,Y,Z)
s=surf(X,Y,Z,'EdgeColor','none')
xlabel('Wi');
ylabel('So');
zlabel('SD');
%%Extract X,Y and Z data from surface plot
x=s.XData;
y=s.YData;
z=s.ZData;
Thanks. K.

Best Answer

I am not certain exactly what you want.
This should at least get you started:
figure
surf(X,Y,Z)
s=surf(X,Y,Z,'EdgeColor','none')
hold on
for k1 = 210:10:270
surf(X, Y, k1*ones(size(Z)), 'FaceAlpha',0.5, 'EdgeColor',[1 1 1 ]*0.8)
end
hold off
It simply loops, creating a horizontal plane of ones at each value of ‘k1’.
If you want a larger plane, you will have to define new ‘X’ and ‘Y’ matrices for it. The ‘Z’ matrix defining the plane would then be a ones matrix the same size as those matrices.