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

时间:2015-06-13 15:13:38

标签: matlab image-processing plot 3d surface

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

Subscript indices must either be real positive integers or logicals.

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

enter image description here

1 个答案:

答案 0 :(得分:5)

将这些值设置为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

enter image description here