如何在 Matlab 中以特定轮廓集截断 3D 图形(例如,图形x^2+y^2
应具有清晰的上边缘,如玻璃)?谢谢!
问问题
2152 次
2 回答
3
您可以使用两种方法对 3-D 图进行切片。
- (左)设置
NaN
高于和低于两个阈值(@Molly 的建议) - (右)使用
ZLim
current 的属性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 回答