2013-10-08 262 views
0

如何在Mat lab中顯示我的網格文件(包含x y和z點的行和列)?我試圖使用衝浪選項,但我無法這樣做。我想在衝浪圖上顯示我的網格(即網格的形狀)如何在Matlab中顯示.msh文件?

+0

,我們需要一個小例子...... – lhcgeneva

+0

您可以使用[http://www.filedropper.com/](http://www.filedropper。 COM /)共享您的.msh文件,或者只需粘貼一些行。它是如何創建的? – marsei

+1

最好的是編輯你的問題,幷包括你的行(註釋跳過行的末尾,你可以看到) – marsei

回答

0

說實話,如果您的輸出來自類似程序開局,我不認爲你想要使用surf。 (Spoiler:如果你可以將你的網格導出爲STL,只需閱讀這個答案的最後一行並點擊鏈接)。

第一個問題:,如果你只是做surf(M)你剛纔加載的數據,MATLAB不會(也不能)確定您打算這些是在X,Y和Z點。從文檔:

surf(Z) creates a three-dimensional shaded surface from the z components in matrix Z, using x = 1:n and y = 1:m, where [m,n] = size(Z). The height, Z, is a single-valued function defined over a geometrically rectangular grid. Z specifies the color data, as well as surface height, so color is proportional to surface height.

下一個問題是:即使你提取X,Y和Z點,並呼籲surf(X,Y,Z),很可能你會得到這樣的錯誤:

Z must be a matrix, not a scalar or vector.

這是因爲surf期望Z是n×m矩陣,其中x和y分別是尺寸爲n和m的矢量,或者是與z尺寸相同的矩陣。即x = 1:10,y = 1:10,z是10乘10矩陣是可接受的,或者是三個10×10矩陣。

最後問題:取決於您嘗試繪製的曲面的形狀/性質。不能保證您的數據將以類似於您最初設計的網格的任何方式被surf繪製。例如,僅僅通過一個簡單的立方體的角落列出點,並呼籲surf

the cube is a lie

surf真的不適合繪製任意表面或複雜的網格;它適用於z = f(x,y);的情況。 mesh也是如此。更好的方法是定義你的積分如何連接並使用patch(鏈接到文檔)。最重要的線基本上是:

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

vertex_matrix會成爲你Mfaces_matrix指示哪些頂點連接在一起。文件交換中的各種示例代碼用於導入CAD網格,並將其轉換爲適合patch的格式,例如用於STL文件的this

0

由於我使用.msh文件的CFD我打開他們通過QuickerSim CFD模塊。

代碼是這樣的:

[p,e,t] = importMeshGmsh('nameoffile.msh'); 
displayMesh2D(p,t);