如何在 Mat lab 中显示我的网格文件(包含 xy 和 z 点的行和列)?我曾尝试使用 surf 选项,但我无法这样做。我想在 Surf 图中显示我的网格(即网格的形状)
2 回答
老实说,如果你的输出来自像 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
您的位置在哪里,M
并faces_matrix
指示哪些顶点连接在一起。文件交换上有各种示例,用于导入 CAD 网格并将其转换为合适的格式patch
,例如STL 文件。
因为我使用.msh
文件,所以我通过模块CFD
打开它们。QuickerSim CFD
代码是这样的:
[p,e,t] = importMeshGmsh('nameoffile.msh');
displayMesh2D(p,t);