MATLAB: How to plot only certain values in a surface plot

surfacesurface plot

I am plotting the following surface:
[X,Y] = meshgrid(-5:.2:5);
Z = -0.15*sin(X).*(X) + 0.2*(Y.^2) +3 ;
surf(X,Y,Z)
I do not want values of Z > 4 to appear on my surface plot.
How could I achieve this?
Many thanks in advance

Best Answer

Two options:
1. Set Z > 4 to NaN:
[X,Y] = meshgrid(-5:.2:5);
Z = -0.15*sin(X).*(X) + 0.2*(Y.^2) +3 ;
Z(Z>4) = NaN;
figure
surf(X,Y,Z)
2. Use a zlim cutoff:
[X,Y] = meshgrid(-5:.2:5);
Z = -0.15*sin(X).*(X) + 0.2*(Y.^2) +3 ;
figure
surf(X,Y,Z)
zlim([min(zlim) 4])
There may also be other possibiloities.