请注意,pcolor 和“surf + view(2)”都不会显示 2D 数据的最后一行和最后一列。
另一方面,使用 imagesc 时,您必须小心轴。仅 gevang 的答案中的 surf 和 imagesc 示例(几乎 - 除了最后一行和最后一列)彼此对应,因为 2D sinc 函数是对称的。
为了说明这两点,我用以下代码制作了下图:
[x, y] = meshgrid(1:10,1:5);
z = x.^3 + y.^3;
subplot(3,1,1)
imagesc(flipud(z)), axis equal tight, colorbar
set(gca, 'YTick', 1:5, 'YTickLabel', 5:-1:1);
title('imagesc')
subplot(3,1,2)
surf(x,y,z,'EdgeColor','None'), view(2), axis equal tight, colorbar
title('surf with view(2)')
subplot(3,1,3)
imagesc(flipud(z)), axis equal tight, colorbar
axis([0.5 9.5 1.5 5.5])
set(gca, 'YTick', 1:5, 'YTickLabel', 5:-1:1);
title('imagesc cropped')
colormap jet
如您所见,冲浪图中缺少第 10 行和第 5 列。 (您也可以在其他答案的图片中看到这一点。)
如果 x 和 y 不是 1:1:N,请注意如何使用“set(gca, 'YTick'...”(和 Xtick)命令正确设置 x 和 y 刻度标签。
还请注意,仅当您的 z 数据对应于 xs 和 ys (每个)等距时,imagesc 才有意义。如果不是,您可以使用 surf(并可能复制最后一列和最后一行以及一个“(end,end)”值 - 尽管这是一种肮脏的方法)。