matlab - 绘制带有孔的不规则 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 掩盖不需要的插值区域。
解决方案
Paraview 似乎对此有解决方案。虽然我没有使用有限元来求解 pde,但我可以在 GMsh 内为我的带孔几何体生成有限元网格。然后我将我的 CSV 数据文件和 GMsh 网格文件(.vtk 格式)导入 ParaView。使用 Dataset 过滤器对我的字段数据进行重新采样,并将 Delaunay2D 的结果作为输入,仅在原始几何上给我轮廓。
推荐阅读
- c++ - 左值对象使用带有右值引用的转换构造函数成功地从函数返回
- c++ - 下面给出的是 Cp3 书中的 c++ 代码。我无法理解这一行:-scanf("0.%[0-9]...\n", &x);
- google-sheets-api - 工作表/密钥/公共/完整服务需要从 30.04.2019 开始的 NID cookie
- rust - 为什么没有发生借用重叠时会出现借用错误?
- python - 无法将数据写入 RDD
- c# - 需要将多个文本框的 TextBox_LostFocus 的重复代码缩减为一个函数
- php - 无法在 laravel 5.8 中安装集合
- c# - WPF Canvas 不呈现绑定到 ItemsControl 的形状
- spring-boot - 如何在 Spring Boot 中使用 jacoco maven 插件将空手道测试代码覆盖率纳入 SonarQube?
- javascript - 如何使用谷歌 API 在日历上应用日历时间