MATLAB中的网格生成

3

MATLAB中是否有任何子程序,可以输入一系列点,并返回一个好的网格,我可以用它向我的同事展示,例如这个?

alt text

实际上,我只需要一个简单的2D网格生成器,它接受一系列X、Y坐标(定义区域边界),并给我返回可以很好地网格化该区域的元素列表。我可以使用MATLAB命令来插值Z值完成剩下的工作。 编辑:我不想使用MATLAB来生成上面那样的绘图。我想使用一个MATLAB库获取元素列表,这样当我自己绘制这些元素时(不是在MATLAB本身中,而是在我自己的C#程序中),我可以获得这个网格化表面。 PS:我知道有DistMesh,但我正在寻找更简单的东西——也许是直接内置在MATLAB中的东西。而且meshgrid不是网格生成。

3
您展示的图可能具有误导性。如果我理解正确,您从一组定义区域边界的点开始。然后,您想生成一个三角形网格,在该区域内创建更多的点吗? - gnovice
1
是的,我想生成一个三角形网格,在该区域内创建更多的点。 - Graviton
5个回答

6

看起来你想创建一个有限元网格,从定义区域边界的一组点开始,然后生成一个三角形网格,在该区域内创建更多的点。我认为这个问题没有"简单"的解决方案。

最接近的“内置”解决方案可能是偏微分方程工具箱(Partial Differential Equation Toolbox),特别是一些几何算法(Geometry Algorithms),如INITMESHREFINEMESH

你提供的DistMesh链接似乎是另一个不错的解决方案。还有一些在MathWorks File Exchange上提交的内容,你可以看一下:


Persson的纯Matlab DistMesh也可能会引起兴趣:http://persson.berkeley.edu/software.html 然而,对于重度网格化,我会将代码写入CSV文件并调用Shewchuk的triangle进行系统调用: http://www.cs.cmu.edu/~quake/triangle.html - shabbychef

1
那张图片看起来和 griddata 文档中的一模一样。里面的示例看起来就是你想要的。 SFTOOL 可以轻松制作你展示的图片。 一个薄板样条,例如 TPAPS ,也应该能完成这个任务。

sftool 明确不是我想要的,而 TPAPS 似乎更适用于获取一般大薄面而不是网格化表面。 - Graviton

1

我认为用户创建的 'gridfit' 是我遇到过的最好的单表面插值方法,比 griddata 好得多/更漂亮。


0

0

网格生成,如Delaunay三角剖分+Steiner点?MATLAB中有一个内置的Delaunay函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接