Matlab 繪制三維立體圖(以地質異常體為例)


前言:在地球物理勘探,流體空間分布等多種場景中,定位空間點P(x,y,x)的物理屬性值Q,並繪制三維空間分布圖,對我們洞察空間場景有十分重要的意義。

1. 三維立體圖的基本要件:

  • 全空間網格化
  • 網格節點的物理屬性值

2.數據准備

數據不易貼,我放在了百度網盤:點擊下載數據,網盤失效了,有要的,我郵件給你發
大概如下形式:

![這里寫圖片描述](http://img.blog.csdn.net/20161216231845088?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

TIP:
這里的數據矩陣為v(5276),可以看成一本27頁紙,每頁繪制了5*6的網格,然后27頁紙疊在一起。當你理解本圖繪制后,數據可以隨意制作。

3.主要函數:sliceisosurfacepatch

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

效果圖:

![這里寫圖片描述](http://img.blog.csdn.net/20161217000748658?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

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

效果圖:

![這里寫圖片描述](http://img.blog.csdn.net/20161217001102383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFuZ3dlbmJvMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

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下不同的效果圖:




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM