声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1602|回复: 4

[绘图技巧] 一个4列数组怎样画出三维等值面图

[复制链接]
发表于 2013-7-21 11:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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

  6.8495244e-002 -3.1691320e-002  8.6000003e-002  1.8070260e+001
   6.7513801e-002 -3.2673128e-002  8.6000003e-002  1.0392495e+002
   6.6408798e-002 -3.2673128e-002  8.6000003e-002  2.2066886e+002
   6.6279300e-002 -3.1691320e-002  8.6000003e-002  3.7475126e+001
   6.5312877e-002 -3.2673128e-002  8.7000005e-002  1.2720372e+002
   6.5312877e-002 -3.2673128e-002  8.6000003e-002  1.4884905e+002
   6.5185033e-002 -3.1691320e-002  8.6000003e-002  4.3129480e+001
   6.5185033e-002 -3.1691320e-002  8.7000005e-002  2.1796129e+002
   6.4225964e-002 -3.2673128e-002  8.7000005e-002  5.4561120e+001
   6.4225964e-002 -3.2673128e-002  8.6000003e-002  2.8470635e+002
   6.4099796e-002 -3.1691320e-002  8.6000003e-002  1.3610749e+002
   6.4099796e-002 -3.1691320e-002  8.7000005e-002  1.5998917e+002
   6.3147977e-002 -3.2673128e-002  8.7000005e-002  1.9867715e+002
   6.3147977e-002 -3.2673128e-002  8.6000003e-002  3.6207426e+002
   6.3023515e-002 -3.1691320e-002  8.6000003e-002  4.5812730e+002
   6.2078845e-002 -3.2673128e-002  8.7000005e-002  2.7523089e+002
   6.2078845e-002 -3.2673128e-002  8.6000003e-002  2.4696790e+002
   6.1956119e-002 -3.1691320e-002  8.6000003e-002  2.2268151e+002
   6.1018497e-002 -3.2673128e-002  8.7000005e-002  3.6242169e+001
   5.6749851e-002 -3.1691320e-002  8.7000005e-002  1.2619493e+002
   5.5846021e-002 -3.2673128e-002  8.7000005e-002  5.8280992e+002
   5.5846021e-002 -3.2673128e-002  8.6000003e-002  1.4913903e+002
   5.5734236e-002 -3.1691320e-002  8.7000005e-002  5.2821333e+002
   5.4836884e-002 -3.2673128e-002  8.7000005e-002  2.8327171e+002
   5.4836884e-002 -3.2673128e-002  8.6000003e-002  6.3832344e+002
   5.4727003e-002 -3.1691320e-002  8.7000005e-002  1.9370622e+002
   5.3836033e-002 -3.2673128e-002  8.7000005e-002  9.1314825e+001
   5.3836033e-002 -3.2673128e-002  8.6000003e-002  6.4241577e+002
   5.3728085e-002 -3.1691320e-002  8.7000005e-002  1.5852530e+002
   5.2843407e-002 -3.2673128e-002  8.6000003e-002  2.7688999e+002
   5.2737407e-002 -3.1691320e-002  8.6000003e-002  5.3199019e+001
   5.1858932e-002 -3.2673128e-002  8.7000005e-002  2.7533537e+002
   5.1858932e-002 -3.2673128e-002  8.6000003e-002  1.0828645e+002
   5.1754903e-002 -3.1691320e-002  8.6000003e-002  2.0242761e+002

isosurface(x,y,z,v,value)画图时要求x,y,z,v都是三维数组,看了下帮助可用meshgrid将x,y, z转换为三维数组,但第四列v因不知道和x,y,z间的关系表达式,不知道怎么转成三维数组,。请高手指点一下,谢谢。
我的程序如下:
  1. clear;
  2. clc
  3. load G:\qq.dat %加载数据
  4. 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的范围
  5. [X,Y,Z]=meshgrid(qmin1:0.01:qmax1,qmin2:0.01:qmax2,qmin3:0.01:qmax3);
  6. figure (1)
  7. 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 | 显示全部楼层
恩 看来楼上的方法 可行  试一下!!
发表于 2013-12-12 11:49 | 显示全部楼层
 楼主| 发表于 2014-7-1 11:00 | 显示全部楼层
牛小贱 发表于 2013-12-10 19:45
isosurface(x,y,z,v,value)函数是画等值面的,你这里就是v取最后一列的值时x,y,z的坐标,将(顶点和面之间 ...

谢谢了,我试一下吧,
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-15 17:04 , Processed in 0.060074 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表