1

如何在 Matlab 中以特定轮廓集截断 3D 图形(例如,图形x^2+y^2应具有清晰的上边缘,如玻璃)?谢谢!

4

2 回答 2

3

您可以使用两种方法对 3-D 图进行切片。

  • (左)设置NaN高于和低于两个阈值(@Molly 的建议
  • (右)使用ZLimcurrent 的属性axes,使用完全相同的阈值。

您可以看到它NaN尊重使用 创建的图块surf,因此它适用于surf关卡。另一方面ZLim,即使通过图块,也可以创建很好的切割图形 - 它在渲染级别上工作。

最后,为了使用 进行更好的切割NaN,您可以定义更精细的网格(meshgrid(-10:0.01:10, -10:0.01:10)例如),但您仍将依赖于创建的网格。此外,该ZLim方法仅适用于恒定切片z(但这就是轮廓的含义)。

下面的情节

在此处输入图像描述

[x y] = meshgrid(-10:10,-10:10);
z = x.^2+y.^2;
figure

%%%% solution 1 (NaN)
z_trim = z;
z_trim(z_trim<100) = NaN;
z_trim(z_trim>150) = NaN;

subplot(1,2,1);
surf(z_trim)
set(gca, 'Visible', 'off');
view(-20,30)


%%%% solution 2 (ZLim)
subplot(1,2,2);
surf(z)
set(gca,'Zlim',[100 150], 'Visible', 'off');
view(-20,30)
于 2013-10-10T22:12:54.440 回答
1

您可以将截止值以上的值设置为nan

[X,Y] = meshgrid(-100:100,-100:100);
Z = X.^2+Y.^2;
ind = Z > 10000;
Z(ind) = nan;
mesh(X,Y,Z)

例子

于 2013-10-10T21:35:48.380 回答