2012-11-03 26 views
3

我有一个数据库作为这样:卷创建

  • d(:,1) =经度
  • d(:,2) =纬度
  • d(:,3) =深度
  • d(:,4) =有毒金属的浓度。

数据间隔不规则,如您所见,所有数据均为矢量数据。您能否告诉我如何制作一个volume,其中所有的金属浓度都被绘制为颜色(这样可以很容易地识别它的高或低),而经度,纬度和深度将在x轴,y轴,和z轴分别?

我知道我必须让我的d(:,4) =体积数据(3D矩阵必须对应于纬度,长度和深度数据)。但我不确定如何创建一个三维数组...

回答

1

尝试scatter3(X,Y,Z,S,C)(见doc

X,Y,Z是不言自明的。 S是标记的大小,C是颜色;你可以根据你的数据改变。

请试试看,如果遇到困难请更新您的问题。


更新1:感谢您的意见,我认为要插在规则网格上的数据,切片数据。

% create a regularly spaced mesh between the exterma of the dataset 
xx = linspace(min(d(:,1)),min(d(:,1)),100); 
yy = linspace(min(d(:,2)),min(d(:,2)),100); 
zz = linspace(min(d(:,3)),min(d(:,3)),100); 

[xi,yi,zi] = meshgrid(xx, yy, zz); 

% interpolate the data in the regular space 
vi = interp3(d(:,1), d(:,2), d(:,3), d(:,4), xi, yi, zi, 'spline'); 

% choose the slice planes 
xslice = [-10 10]; yslice = 0; zslice = [-100, -50, -10]; 

% display the sliced interpolated data 
slice(xi,yi,zi,vi,xslice,yslice,zslice); 

查找在帮助功能(你可能需要调整了参数)。

但下一次:尝试自己并发布您的尝试。帮助更容易,再加上你会学到更多。

+0

嗨大卫,谢谢。如果x,y和z分别是lat,long和depth,其中S = size和C = color,则第四维仍然缺失(即我想用不同颜色显示的金属浓度)。但是,可以通过编写以下命令来解决该问题:scatter3(x(:),y(:),z(:),[],metal(:))。但我真正想要做的是使金属浓度的等值面。这需要首先制作一些“金属”,如下所示:http://www.mathworks.com/help/matlab/ref/slice.html。请在这里找到我的数据库的一小部分:http://www.mediafire.com/view/?89kuz9e3yfrh92f – ToNoY

+0

(谁是大卫?)另外似乎你已经找到了自己的问题的解决方案。 –

+0

嗨Hugues,我没有完成...我仍然不知道如何制作一个音量,然后从非均匀分布的数据中切出音量。当人们用均匀分布的随机变量和功能完全没有科学价值时,人们只是制作漂亮的彩色图形/动画是令人恶心的: – ToNoY