1. 程式人生 > >使用Matlab繪製三維圖的幾種方法

使用Matlab繪製三維圖的幾種方法

以下六個函式都可以實現繪製三維影象:

  • surf(xx,yy,zz);
  • surfc(xx,yy,zz);
  • mesh(xx,yy,zz);
  • meshc(xx,yy,zz);
  • meshz(xx,yy,zz);
  • waterfall(xx,yy,zz);
  • plot3(xx,yy,zz);

其中值得說明的是如何構造出對應的資料出來(xx, yy, zz)出來。下面通過一段標準的程式碼段進行展示如何構造出相應的資料。

x=-1:0.1:1;
y=-1:0.1:1;
[xx,yy]=meshgrid(x,y);
zz=xx.*exp(-xx.^2-yy.^2);
surf(xx,yy,zz);

其中meshgrid的作用就是生成網格(矩陣)資料xx,yy

。觀察xx,yy的資料為:
xx的資料
x的資料
從圖中可以看到實際上xx是將x複製了y的長度份,也就是將二維平面(x,y)按照x, y設定的步長分割成網路,自然對應的zz也應該是對應有網格x,y的各自長度的乘積個,如下圖所示:
zz的資料
最後上段程式碼繪製出來的影象為:
這裡寫圖片描述
其中還有一個值得說明的是plot3函式與plot函式用法類似,同樣的按照類似mesh等的構造資料的方法,如果僅僅繪製在mesh影象中的某些資料點,就可以採用plot3函式實現。比如下段程式碼就可以實現繪製點,並且連線的功能:

x0 = 0; y0 = 0; z0 = 0;
plot3(x0,y0,z0,'*k','linewidth',2,'markersize'
,10); plot3(indexcol,indexrow,z0,'*k','linewidth',2,'markersize',10); plot3(indexcol,indexrow,maxScore,'*k','linewidth',2,'markersize',10); xx2(1) = x0; xx2(2) = indexcol; yy2(1) = y0; yy2(2) = indexrow; zz2(1) = z0; zz2(2) = z0; plot3(xx2, yy2, zz2, 'r','linewidth',2);

結果如下圖所示:
繪製3維曲線

2015-8-18
藝少