显示具有非矩形边界的表面

Displaying surface with non-rectangular boundary

参考附图。我想使用函数 surf() 在 Matlab 中显示图像。但是,我只想显示没有背景的实际对象区域(实际对象周围的浅绿色区域,其值为 0)。怎么做?我尝试用 0 替换所有外部区域 NaN 并将高度图中的所有值设置为非零值,但我仍然收到错误消息:

Subscript indices must either be real positive integers or logicals.

那么如何显示具有非矩形边界的表面?

将这些值设置为 NaN 应该可以。这是一个例子:

[x, y] = ndgrid(linspace(-1,1,500));
z = cos(2*pi*(x+y)*2);
z(x.^2+y.^2>1) = NaN; %// remove values outside unit circle
surf(x,y,z,'edgecolor','none')
colorbar
view(2)
axis equal