Matlab 如何简单地对三角形网格进行下采样?

Matlab 如何简单地对三角形网格进行下采样?,matlab,mesh,resampling,downsampling,triangular,Matlab,Mesh,Resampling,Downsampling,Triangular,当我通过在Matlab中显示曲面网格时,会出现此要求,因为网格密集(高分辨率),渲染速度慢且无法旋转。所以我想知道是否有一些直观的方法来减少网格采样,同时保持基本形状 在我把问题发布到这里之前,我已经在谷歌上搜索过了。一个流行的工具,具有类似的功能,remeshsurf。但它首先利用原始网格重构体积,然后根据所需的分辨率构造新的网格。在我看来,一个重要的缺陷是它改变了原来的形状 有人知道吗?Matlab函数将是最好的,因为它易于测试 谢谢 Nico您应该减少数据采样 [x,y]=meshgrid

当我通过在Matlab中显示曲面网格时,会出现此要求,因为网格密集(高分辨率),渲染速度慢且无法旋转。所以我想知道是否有一些直观的方法来减少网格采样,同时保持基本形状

在我把问题发布到这里之前,我已经在谷歌上搜索过了。一个流行的工具,具有类似的功能,
remeshsurf
。但它首先利用原始网格重构体积,然后根据所需的分辨率构造新的网格。在我看来,一个重要的缺陷是它改变了原来的形状

有人知道吗?Matlab函数将是最好的,因为它易于测试

谢谢


Nico

您应该减少数据采样

[x,y]=meshgrid(1:15,1:15);
tri = delaunay(x,y);
z = peaks(15);
trisurf(tri,x,y,z)
figure
x1 = x(1 : 2 : end,1 : 2 : end);
y1 = y(1 : 2 : end,1 : 2 : end);
z1 = z(1 : 2 : end,1 : 2 : end);
tri1 = delaunay(x1,y1);
trisurf(tri1,x1,y1,z1)

您甚至可以对每个数据使用
downsample
功能。

@Kamtal(最初我添加此帖子作为评论,但提示“帖子太长”),非常感谢。我想,你的方法是一个好的选择,只有当船体的形状是显而易见的。对于其他情况,例如人脑皮层,Matlab
delaunay
函数不够智能,无法在保留基本形状(折叠)的同时重新生成三角形网格。(大约1.7米)我上传了一个例子,描述了大脑皮层的表面(包括左半球和右半球)。它可以通过以下代码显示:,

加载mysurf.mat;
图,trisurf(mysurf.tri,mysurf.coord(:,1),mysurf.coord(:,2),mysurf.coord(:,3));
视图(-90,0);
daspect([1]);轴紧;camlight;轴vis3d关闭;
照明电话;
材料光泽
着色界面;

感谢您的及时友好回答。但这可能只适用于我们确切知道的曲面,比如V=f(x,y)。但是,如果我仅有的原始数据是高分辨率网格,而不是分布函数本身,或者有时是3D函数,如V=f(x,y,z)。因此,根据您的建议,我们应该首先从原始网格插值新网格上的值?非常感谢。@nicozuo,在调用
trisurf
之前,您有
x,y,z
,所以只需对其进行下采样即可。如果它不起作用,请给出一个示例数据。