首页 > 解决方案 > 绘制带有孔的不规则 xy 数据的轮廓

问题描述

在过去的两天里,我一直被这个问题困扰,到目前为止还没有找到解决方案。我有以下格式的数据:

x1, y1, val1
..  ..  ..
..  ..  ..
xn, yn, valn

这些值val1, ..., valn是我在对几何图形进行模拟后获得的场量,如下所示。

在此处输入图像描述

只有灰色区域是感兴趣的区域,而蓝色/深蓝色区域不是(包括内部的倒 L 形蓝色区域)。因此,数据的 x 和 y 坐标是分散的/不规则的,并且由于我的原始几何图形中的孔而具有很大的间隙。有没有办法得到这个数据的填充等高线图?在 Matlab 中尝试以下操作可以让我对原始多边形之外的三角形进行三角剖分。此外,它填补了我不想要的漏洞。

x = data(:,1);
y = data(:,2);
z = data(:,3);

%
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
xi = dt.Points(:,1) ;
yi = dt.Points(:,2) ;
F = scatteredInterpolant(x,y,z);
zI = F(xi,yi) ;
trisurf(tri,xi,yi,zI) 

另一种可能性是在 ParaView 中导入数据并过滤为Table-to-Points--> Delaunay Triangulation 2D. 但这和 Matlab 有同样的问题。NaN通过使用一些数学表达式,这些孔不能解析以用 s 掩盖不需要的插值区域。

标签: matlabcontourparaview

解决方案


Paraview 似乎对此有解决方案。虽然我没有使用有限元来求解 pde,但我可以在 GMsh 内为我的带孔几何体生成有限元网格。然后我将我的 CSV 数据文件和 GMsh 网格文件(.vtk 格式)导入 ParaView。使用 Dataset 过滤器对我的字段数据进行重新采样,并将 Delaunay2D 的结果作为输入,仅在原始几何上给我轮廓。


推荐阅读