guohf 发表于 2013-7-21 11:52

一个4列数组怎样画出三维等值面图

本帖最后由 牛小贱 于 2014-4-24 09:10 编辑

我将三维计算结果处理成一个4列数组(矩阵),想画出某变量的等值面图。下面是部分数据,其中前三列分别是x,y,z坐标值,第4列是对应的某变量V的值。

6.8495244e-002 -3.1691320e-0028.6000003e-0021.8070260e+001
   6.7513801e-002 -3.2673128e-0028.6000003e-0021.0392495e+002
   6.6408798e-002 -3.2673128e-0028.6000003e-0022.2066886e+002
   6.6279300e-002 -3.1691320e-0028.6000003e-0023.7475126e+001
   6.5312877e-002 -3.2673128e-0028.7000005e-0021.2720372e+002
   6.5312877e-002 -3.2673128e-0028.6000003e-0021.4884905e+002
   6.5185033e-002 -3.1691320e-0028.6000003e-0024.3129480e+001
   6.5185033e-002 -3.1691320e-0028.7000005e-0022.1796129e+002
   6.4225964e-002 -3.2673128e-0028.7000005e-0025.4561120e+001
   6.4225964e-002 -3.2673128e-0028.6000003e-0022.8470635e+002
   6.4099796e-002 -3.1691320e-0028.6000003e-0021.3610749e+002
   6.4099796e-002 -3.1691320e-0028.7000005e-0021.5998917e+002
   6.3147977e-002 -3.2673128e-0028.7000005e-0021.9867715e+002
   6.3147977e-002 -3.2673128e-0028.6000003e-0023.6207426e+002
   6.3023515e-002 -3.1691320e-0028.6000003e-0024.5812730e+002
   6.2078845e-002 -3.2673128e-0028.7000005e-0022.7523089e+002
   6.2078845e-002 -3.2673128e-0028.6000003e-0022.4696790e+002
   6.1956119e-002 -3.1691320e-0028.6000003e-0022.2268151e+002
   6.1018497e-002 -3.2673128e-0028.7000005e-0023.6242169e+001
   5.6749851e-002 -3.1691320e-0028.7000005e-0021.2619493e+002
   5.5846021e-002 -3.2673128e-0028.7000005e-0025.8280992e+002
   5.5846021e-002 -3.2673128e-0028.6000003e-0021.4913903e+002
   5.5734236e-002 -3.1691320e-0028.7000005e-0025.2821333e+002
   5.4836884e-002 -3.2673128e-0028.7000005e-0022.8327171e+002
   5.4836884e-002 -3.2673128e-0028.6000003e-0026.3832344e+002
   5.4727003e-002 -3.1691320e-0028.7000005e-0021.9370622e+002
   5.3836033e-002 -3.2673128e-0028.7000005e-0029.1314825e+001
   5.3836033e-002 -3.2673128e-0028.6000003e-0026.4241577e+002
   5.3728085e-002 -3.1691320e-0028.7000005e-0021.5852530e+002
   5.2843407e-002 -3.2673128e-0028.6000003e-0022.7688999e+002
   5.2737407e-002 -3.1691320e-0028.6000003e-0025.3199019e+001
   5.1858932e-002 -3.2673128e-0028.7000005e-0022.7533537e+002
   5.1858932e-002 -3.2673128e-0028.6000003e-0021.0828645e+002
   5.1754903e-002 -3.1691320e-0028.6000003e-0022.0242761e+002

isosurface(x,y,z,v,value)画图时要求x,y,z,v都是三维数组,看了下帮助可用meshgrid将x,y, z转换为三维数组,但第四列v因不知道和x,y,z间的关系表达式,不知道怎么转成三维数组,。请高手指点一下,谢谢。
我的程序如下:clear;
clc
load G:\qq.dat %加载数据
qmax1=max(qq(:,1));qmin1=min(qq(:,1));qmax2=max(qq(:,2));qmin2=min(qq(:,2));qmax3=max(qq(:,3));qmin3=min(qq(:,3));%求出x,y,z的范围
=meshgrid(qmin1:0.01:qmax1,qmin2:0.01:qmax2,qmin3:0.01:qmax3);
figure (1)
isosurface(X,Y,Z,qq(:,4),20); %问题出在qq(:,4),



牛小贱 发表于 2013-12-10 19:45

isosurface(x,y,z,v,value)函数是画等值面的,你这里就是v取最后一列的值时x,y,z的坐标,将(顶点和面之间的关系,顶点坐标)拼成等值面。很显然,v是个数组,也就是你所说的qq(:,4),加载数据的第四列。但是,v只能是一个数,而不是一个数组。楼主可以试一下isonormals(X,Y,Z,V,vertices)这个函数,希望能帮到楼主。

沧海一声笑 发表于 2013-12-12 11:47

恩 看来楼上的方法 可行试一下!!{:{39}:}

牛小贱 发表于 2013-12-12 11:49

沧海一声笑 发表于 2013-12-12 11:47 static/image/common/back.gif
恩 看来楼上的方法 可行试一下!!

也不一定啊 试一下吧 呵呵

guohf 发表于 2014-7-1 11:00

牛小贱 发表于 2013-12-10 19:45
isosurface(x,y,z,v,value)函数是画等值面的,你这里就是v取最后一列的值时x,y,z的坐标,将(顶点和面之间 ...

谢谢了,我试一下吧,
页: [1]
查看完整版本: 一个4列数组怎样画出三维等值面图