The color interpolation carried out by MATLAB is not symetric by values but also by order. This induces the defect.
To trick MATLAB you have te reorganize the data
Z=[0 0.1 0.3 0.1 0;
0 0.2198 0.4432532 0.2198 0;
0 0.4242 0.7898989 0.4242 0;
0 0.2198 0.4432532 0.2198 0;
0 0.1 0.3 0.1 0];
[X,Y] = meshgrid(0:1.5:6,0:1.5:6);
x = linspace(-1,1,size(Z,2));
y = linspace(-1,1,size(Z,1));
close all
hold on
for k=1:4
if k<=2
ix = find(x>=0);
else
ix = flip(find(x<=0));
end
if mod(k,2)==0
iy = find(y>=0);
else
iy = flip(find(y<=0));
end
surf(X(iy,ix), Y(iy,ix), Z(iy,ix), 'LineStyle', '-', 'FaceColor', 'interp')
end
daspect([1,1,0.2])
colormap(jet)
colorbar
Defect coloring when using single SURF command
Best Answer