MATLAB: How to show a deformation of a sphere

axisplotting

I want to show a function that take a sphere with radius 1 as input and that gives in output an ellipsoid with axes always lower then 1.
tiledlayout(1,2);
[X, Y, Z] = ellipsoid(0,0,0,1,1,1,40);;
surf(nexttile,X,Y,Z);
axis equal;
title('Before')
mesh(nexttile,X/2,Y/2,Z/2);
axis equal
title('Then')
The problem with this code is that, instead of seeing a deformation of the sphere I get an adaptation of the axis. I'd like to fix the axes to be unitary for both the subfigures.

Best Answer

Keep track of the x, y, and z-lims or the axis-limits. Something like this:
tiledlayout(1,2);
[X, Y, Z] = ellipsoid(0,0,0,1,1,1,40);;
surf(nexttile,X,Y,Z);
axis equal;
ax1 = axis;
title('Before')
mesh(nexttile,X/2,Y/2,Z/2);
axis equal
title('Then')
axis(ax1)
You might have to do the same for the viewing-angles too, but the same procedure applies.
HTH