使用Matlab繪製三維圖的幾種方法
阿新 • • 發佈:2019-02-15
以下六個函式都可以實現繪製三維影象:
- 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是將x複製了y的長度份,也就是將二維平面(x,y)按照x, y設定的步長分割成網路,自然對應的zz也應該是對應有網格x,y的各自長度的乘積個,如下圖所示:
最後上段程式碼繪製出來的影象為:
其中還有一個值得說明的是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);
結果如下圖所示:
2015-8-18
藝少