前言:在地球物理勘探,流體空間分布等多種場景中,定位空間點P(x,y,x)的物理屬性值Q,並繪制三維空間分布圖,對我們洞察空間場景有十分重要的意義。
1. 三維立體圖的基本要件:
- 全空間網格化
- 網格節點的物理屬性值
2.數據准備
數據不易貼,我放在了百度網盤:點擊下載數據
大概如下形式:

TIP:
這里的數據矩陣為v(5276),可以看成一本27頁紙,每頁繪制了5*6的網格,然后27頁紙疊在一起。當你理解本圖繪制后,數據可以隨意制作。
3.主要函數:slice、isosurface、patch
NOTE:想了解每個函數的用法可以在matlab command windows中 輸入 doc slice即可獲得slice的matlab詳解
4.主要代碼:
TIP:你可以將代碼復制到一起運行,此處我是單獨展示,分別繪圖
1.單獨切片,切法可自定義。便於展示局部細節
clc,clear
v=csvread('vdata.txt'); v=reshape(v,5,27,6); [x,y,z]=meshgrid(1:27,1:5,1:6); h=figure(1); set(h,'name','取單切片') subplot(221) slice(x,y,z,v,[],[1],[]); shading interp set(gca,'zdir','reverse'); axis equal grid on subplot(222) slice(x,y,z,v,[],[2],[]); shading interp colormap('jet') set(gca,'zdir','reverse'); axis equal grid on subplot(223) slice(x,y,z,v,[],[3],[]); shading interp set(gca,'zdir','reverse'); axis equal grid on subplot(224) slice(x,y,z,v,[],[4],[]); shading interp set(gca,'zdir','reverse'); axis equal grid on
效果圖:

2.全空間立體切片
h2=figure(2); set(h2,'name','全空間切片','MenuBar','none','ToolBar','none') slice(x,y,z,v,[1:2:27],[2 3 4],[2 3 4 5]) shading interp colorbar colormap('jet') set(gca,'zdir','reverse'); axis equal grid on box on
效果圖:

3.立體包絡圖
h3=figure(3); set(h3,'name','定值包絡立體圖','MenuBar','none','ToolBar','none') set(gcf,'InvertHardcopy','off') fw=350; %%此值為最外層包絡面取值 fv=isosurface(x,y,z,v,fw); p=patch(fv); set(p,'facecolor','b','edgecolor','none'); patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none'); colorbar colormap('jet') box on daspect([1,1,1]) view(3) set(gca,'zdir','reverse','color',[0.2,0.2,0.2]); camlight camproj perspective lighting phong axis equal grid on title(['最外層表面的值為: ' , num2str(fw)]);
NOTE:上述代碼中的fw是作主要可變參數,控制最外層包絡面的值
如下演示多個fw下不同的效果圖:
轉載:https://www.cnblogs.com/yangwenbo214/p/6192925.html