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,主界面如圖所示,在命令窗口輸入以下代碼??梢钥吹皆撁钶敵隽藘蓚€矩陣分別是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)
正確的閱讀順序是從左到右,從上到下。對每個矩陣按照列來閱讀,比如首先是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
下面結合剛才所學,來畫一個三維圖形。代碼如下圖所示,首先在平面上產生一個從-2到2的區間。然后產生在該區間的z軸坐標值,最后畫出該三維圖形。
-8:.5:8表示產生-8到8之間一組間隔0.5的數 [a,b]=meshgrid(-8:.5:8),就表示x,y軸都是這些數組成的網格,即從一維擴充到二維了。 -8和8決定了圖像的范圍,0.5決定了曲面網格的大小或者說光滑程度
最終得的圖形如下所示。選擇此處,還可以隨意拖動,從不同角度觀看該圖形。
用mesh畫三維圖,先要meshgrid,就是將xoy平面用你定義的x,y向量網格化,之后對每一個得到的點求其對應的函數值,最后用mesh將函數圖像做出來,你如果還有不清楚的地方,可以在command window 下敲“doc mesh”或是“doc meshgrid”。 meshz是繪制
擴展閱讀,以下內容您可能還感興趣。
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)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com