當前位置:生活全書館 >

IT科技

> matlab中的meshgrid命令應該怎麼用

matlab中的meshgrid命令應該怎麼用

meshgrid 函式用來生成網格矩陣,可以是二維網格矩陣。 exp1_1:生成二維網格,用法為:[x y]=meshgrid(a b); % a 和b是一維陣列,如a=[1 2 3]; b= [2 3 4]; 則生成的 X 和 Y 都是為 3X3 維的矩陣, >> [x y]=meshgrid(a,b) x = 1 2 3 1 2 3 1 2

meshgrid是MATLAB中用於生成網格取樣點的函式。在使用MATLAB進行3-D圖形繪製方面以及畫向量圖方面有著廣泛的應用。

方法

如下圖所示,該圖畫出了平面座標上的12點。這12點的座標很容易辨識出來,

下面以墨西哥草帽為例,說明meshgrid命令使用方法。 xi=-10:0.51:10;yi=-10:0.51:10; [x,y]=meshgrid(xi,yi); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); mesh(x,y,z);

matlab中的meshgrid命令應該怎麼用

啟動matlab,主介面如圖所示,在命令視窗輸入以下程式碼。可以看到該命令輸出了兩個矩陣分別是x與y。其中的x就是上圖點的橫座標值,y就是點的縱座標值。

meshgrid是生成網格空間; 由x、y座標軸上的點生成平面的交叉點 如x是1、2、3;y是1、2、3; meshgrid後,就是9個交叉點,(1,1),(1,2),(1,3),(2,1),(2,2)

matlab中的meshgrid命令應該怎麼用 第2張

正確的閱讀順序是從左到右,從上到下。對每個矩陣按照列來閱讀,比如首先是x矩陣的第一列與y矩陣的第一列,取出它們的第一個元素就是點(0,0),取出第二個元素就是(0,1),依次是(0,2)、(0,3)。分別對應了上圖的第一列點。後面的以此類推。

meshgrid(x,y)產生兩個矩陣,第一個矩陣是由x作為行向量組成,第二個向量由y作為列向量組成 meshgrid(x,x)=meshgrid(x),即也產生兩個矩陣。 比如 x=1:1:4,則x=[1 2 3 4] 那麼生成的兩個矩陣分別是 [1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4] 和 [1 1

matlab中的meshgrid命令應該怎麼用 第3張

下面結合剛才所學,來畫一個三維圖形。程式碼如下圖所示,首先在平面上產生一個從-2到2的區間。然後產生在該區間的z軸座標值,最後畫出該三維圖形。

-8:.5:8表示產生-8到8之間一組間隔0.5的數 [a,b]=meshgrid(-8:.5:8),就表示x,y軸都是這些陣列成的網格,即從一維擴充到二維了。 -8和8決定了影象的範圍,0.5決定了曲面網格的大小或者說光滑程度

matlab中的meshgrid命令應該怎麼用 第4張

最終得的圖形如下所示。選擇此處,還可以隨意拖動,從不同角度觀看該圖形。

用mesh畫三維圖,先要meshgrid,就是將xoy平面用你定義的x,y向量網格化,之後對每一個得到的點求其對應的函式值,最後用mesh將函式影象做出來,你如果還有不清楚的地方,可以在command window 下敲“doc mesh”或是“doc meshgrid”。 meshz是繪製

matlab中的meshgrid命令應該怎麼用 第5張

擴充套件閱讀,以下內容您可能還感興趣。

matlab中mesh和surf有什麼區別

一、指代不同

1、mesh:指MESH equation平衡級分離過程的數學模型。

2、surf:是一個穩健的影象識別和描述百演算法。

二、特點不同

1、mesh:各平衡級的每一組分物料度平衡方程、相平衡方程和各平衡級的組分分率歸 一化方程、熱平衡方程構成。

2、surf:法在適中的條件下完成兩幅影象問中物體的匹配基本實現了實時處理,其快速的基礎實際上只有一個積分影象haar求導。

三、用處不同

1、mesh:平衡級分離過程的數學模型,由各平衡級的每一組分答物回料平衡方 程(M方程)、相平衡方程和各平衡級的組分分率歸 一化方程(S方程)、熱平衡方程(H方程)構成。

2、surf:可被用於計算機視覺任務,如物件識別和3D重構。近似的2D 離散小波變換響應和並且有效地利用了積分圖。

參考資料來答源:百度百科-MESH方程

參考資料來源:百度百科-Surf

matlab用meshgrid和surface畫出函式

很明顯,這是球面的方程。為避免使用直角坐來標表達會導致的多值問題,可用球面座標生源成資料,然後再轉換到直角座標。w未給定,任取一個值zd。

 

參考程式碼:

w = 5;

r = sqrt(w);

n = 30;

theta = (-n:2:n)/n * pi;

phi = (-n:2:n)/n * pi/2;

[theta,phi] = meshgrid(theta,phi);

cosphi = cos(phi); %cosphi(1) = 0; cosphi(n+1) = 0;

sintheta = sin(theta); %sintheta(1) = 0; sintheta(n+1) = 0;

x = r*cosphi.*cos(theta);

y = r*cosphi.*sintheta;

z = r*sin(phi);

surface(x,y,z)

view(3)

axis equal

grid on

matlab初學,生成MESH之前一般要先執行[xx,yy]=meshgrid(x,y)命令,然後

[xx,yy]=meshgrid(x,y)命令,是生成一個百平面網格座標矩陣,可以得到平面網格座標點,再利用度zz與xx,yy的二元函式關係,計算出第三維座標zz,這樣就可以內利用mesh(xx,yy,zz)命令畫出三維立容體圖了。至於字母的選擇不一定用xx,yy,zz用別的也可以,如用大寫字母X,Y,Z更簡單。

meshgrid和ndgrid的區別及用法

問題講的很詳細,我就有信心解決了。呵呵!

其實,對於2D,3D使用meshgrid和ndgrid都可以,但要注意:

[X1,X2,X3] = NDGRID(x1,x2,x3)<=>[X2,X1,X3] = MESHGRID(x2,x1,x3)

即x和y軸要反向。為何呢?幫助說的很清楚:因為NDGRID適用於n維空間,而meshgrid適用於笛卡爾空間。

所以"ppt上特意寫到必須用ndgrid"是不對的。

meshgrid和ndgrid的用法不同之處在於:2D、3D都可以使用(區別是x軸,y軸的轉換),但對於4D、5D...只能e799bee5baa631333262363737使用ndgrid.

順便回答一下你沒問,但很多人問我的問題:為什麼要使用meshgrid?

matlab使用矩陣的方式進行運算,對於2D而言,如果取樣10個點(指x,y軸),那麼對於x=第一個取樣點,反映到矩陣就是10個,即不管y是哪個值,x的第一取樣點保持不變;對y是同理。因此,2D產生的x和y都是兩維矩陣。

最後給你一個例項,說明兩者在這裡是通用的:

x0=-3:.6:3;

y0=-2:.4:2;

[x,y]=ndgrid(x0,y0);

[Y,X]=meshgrid(y0,x0);

z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);

Z=(X.^2-2*X).*exp(-X.^2-Y.^2-X.*Y);

sp=csapi({x0,y0},z);

SP=csapi({x0,y0},Z);

subplot(221),fnplt(sp);

subplot(222),fnplt(SP);

matlab:meshgrid函式在三維繪圖中的作用,舉例說明

例如知z=(x^2+y^道2)^3, 其中專-1<=x<=1,-2<=y<=2 畫曲屬面

[x,y]=meshgrid(-1:0.01:1,-2:0.02:2);

z=(x.^2+y.^2).^3;

mesh(x,y,z)

標籤: meshgrid 命令 matlab
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/5nmr0.html