0

如何在 Mat lab 中显示我的网格文件(包含 xy 和 z 点的行和列)?我曾尝试使用 surf 选项,但我无法这样做。我想在 Surf 图中显示我的网格(即网格的形状)

4

2 回答 2

0

老实说,如果你的输出来自像 Gambit 这样的程序,我认为你根本不想使用surf。(剧透:如果您可以将网格导出为 STL,只需阅读此答案的最后一行并单击链接)。

第一个问题:如果您只是surf(M)对刚刚加载的数据进行处理,Matlab 将不会(不能)确定您希望这些是 x、y 和 z 中的点。从文档:

surf(Z) 使用 x = 1:n 和 y = 1:m,从矩阵 Z 中的 z 分量创建一个三维阴影表面,其中 [m,n] = size(Z)。高度 Z 是在几何矩形网格上定义的单值函数。Z 指定颜色数据以及表面高度,因此颜色与表面高度成正比。

下一个问题:即使提取 X、Y 和 Z 点并调用surf(X,Y,Z),也很可能会收到此错误:

Z 必须是矩阵,而不是标量或向量。

这是因为surf期望 Z 是一个 nxm 矩阵,其中 x 和 y 分别是大小为 n 和 m 的向量,或者是与 zie x = 1:10, y=1:​​10, z 大小相同的矩阵 x = 1:10, z 是 10 by 10 矩阵是可以接受的,或者三个 10 x 10 矩阵。

最后一个问题:取决于您要绘制的表面的形状/性质。无法保证您的数据将以surf任何类似于您最初设计的网格的方式绘制。例如,只需列出简单立方体角上的点并调用surf

立方体是一个谎言

surf确实不是为绘制任意曲面或复杂网格而设计的;它适用于z = f(x,y);. 也是如此mesh。更好的方法是定义您的点如何连接并使用补丁(链接到文档)。重要的一行基本上是:

patch('Vertices',vertex_matrix,'Faces',faces_matrix)

vertex_matrix您的位置在哪里,Mfaces_matrix指示哪些顶点连接在一起。文件交换上有各种示例,用于导入 CAD 网格并将其转换为合适的格式patch,例如STL 文件

于 2013-10-08T12:01:00.467 回答
0

因为我使用.msh文件,所以我通过模块CFD打开它们。QuickerSim CFD

代码是这样的:

[p,e,t] = importMeshGmsh('nameoffile.msh');
displayMesh2D(p,t);
于 2016-07-20T12:22:54.700 回答