guohf 发表于 2010-7-10 09:55

请问怎样将两结果(流场速度和线形态)叠加到一张图上?

我已分别计算出流场速度和线的运动形态,都是三维的。其中流场速度是用CFD软件算的,而线的形态是在MATLAB里编程算的,现想把两结果表示在同一张图上,如下图:(流场可是矢量或流线)

流场速度如下形式:
a=[0.0110    0.0014    5.6028    0.2198    0.7451   38.1989
    0.0110    0.0014    5.4945    0.3287    0.8779   37.1386
    0.0110    0.0014    5.3862    0.4125    1.0023   36.0757
    0.0110    0.0014    5.2786    0.4713    1.1158   35.0193
    0.0111    0.0015    5.1742    0.5044    1.2138   33.9951
    0.0110    0.0014    5.0695    0.5178    1.2979   32.9624
   -0.3308   -0.3639    5.9276   23.8740-19.9144   10.4938
   -0.3308   -0.3639    5.8193   23.3261-19.2267   10.2186
   -0.3308   -0.3639    5.7110   22.7634-18.5380    9.9665
   :          :         :         :         :         :
   :          :         :         :         :         :
   ];

其中速度a的前三列为坐标分量,后三列是对应的速度分量。

而表示线形态的坐标矩阵是:
b=[-0.0001   -0.0009    0.0100
   -0.0000   -0.0009    0.0103
    0.0001   -0.0009    0.0105
    0.0001   -0.0009    0.0108
    0.0002   -0.0009    0.0110
    0.0003   -0.0009    0.0113
    0.0003   -0.0009    0.0115
    0.0004   -0.0009    0.0118
    0.0005   -0.0008    0.0120
    0.0005   -0.0008    0.0123
    0.0006   -0.0007    0.0126
    0.0007   -0.0007    0.0128];

问题的关键是怎样画速度矢量或流线图,二维的就行,用quiver或streamline吗?

不知把问题说明白了没,请高手帮个忙,不胜感谢。

ChaChing 发表于 2010-7-10 11:03

先使用quiver3后, hold on; 再使用streamline, 试试看吧!
有点好奇, LZ的结果不是CFD软件得出的吗? 为何不直接使用CFD软件提供的后处理?:loveliness:

guohf 发表于 2010-7-11 12:21

谢了,试一下。
问题是我要把两个用不同软件算的结果处理到同一张图上,就不能用CFD的后处理了。如我要处理成附件中的图形:

ChaChing 发表于 2010-7-11 15:32

回复 板凳 guohf 的帖子

谢谢! 了解了

guohf 发表于 2010-7-14 10:05

回复 地板 ChaChing 的帖子

谢谢你的指点,能画出来了,但我还有一些问题要求教。

1) 按你说的把我的数据加进去,显示的平面图矢量太密,且其长度很微短,不太清楚。矢量的大小及数量能否调整?

2) 我的流场数据是z 表流向, xy面是圆。view(0,90)显示的是xy面的投影,若要表示xz或 yz面的投影是用view(0,0)吧?

3) 若要画流线图该怎样写程序?

下面把我的流场数据上传,线的运动形态数据b不变。
http://myweb.polyu.edu.hk/~tcguohf/a.rar

请帮个忙,谢谢了。

[ 本帖最后由 guohf 于 2010-7-14 10:11 编辑 ]

ChaChing 发表于 2010-7-15 00:19

回复 5楼 guohf 的帖子

资料下了! 但还没试, LZ可否给齐现有代码(比较不必再花时间), 假日个人有空再试试看!
quiver3没真正用过, 还不确定能否调整, 我想应该可以
view(0,90)或view(2)是xy面, view(90,0)是yz面, view(0,0)是xz面

guohf 发表于 2010-7-15 10:45

回复 6楼 ChaChing 的帖子

非常感谢你的帮助和热心。
这个图形的数据已全了,其它的和这个类似,只要这个程序好了,其它的for循环一下就行了。

另外,还有个问题,能否直接多三维中切片画出二维图,不用view,这样矢量就不会那么密了。

老板在催我要结果,快一星期了还是画不出来。请帮忙,谢谢了。

guohf 发表于 2010-7-18 10:46

回复 6楼 ChaChing 的帖子

ChaChing你好

能帮我解决问这个问题吗?拜托了。

我的数据比较大,是用FLUENT流体软件算的,网格是非结构的,比较密,把a完全画出来非常卡。

不过先问个外行话,如果我只想要xy, xz, yz方向的投影(主要是把实物“线”形态考虑进去),那我能不能先取出其剖面流场数据,再和“线”的投影叠加。这样可把数据减少,但“线”是一个细长形物,就不知道该取流场的哪一个横纵剖面,可以和“线”的投影相对应????

谢谢

ChaChing 发表于 2010-7-18 23:48

回复 7楼 guohf 的帖子

以前没真正使用过, 下午看了下help并花了点时间试下!
一开始使用quiver3(x,y,z,u,v,w), 不知是否我的笔电内存不够, 好像死机似的!
所以只能再搜索下有无适合函数可用(LZ亦可看看Volume Visualization), 一个个看下觉得streamslice可能合适
但其输入格式为3维, 因不清楚LZ格点间的特性, 随意内插了30点
楼主再依实际情况修改下 clc; clear; load a.mat
x=a(:,1); y=a(:,2); z=a(:,3); u=a(:,4); v=a(:,5); w=a(:,6);
mm=;
del=[(mm(2)-mm(1))/30,(mm(4)-mm(3))/30,(mm(6)-mm(5))/30];
= meshgrid(mm(1):del(1):mm(2),mm(3):del(2):mm(4),mm(5):del(3):mm(6));
ui = griddata3(x,y,z,u,xi,yi,zi,'nearest');
vi = griddata3(x,y,z,v,xi,yi,zi,'nearest');
wi = griddata3(x,y,z,w,xi,yi,zi,'nearest');
streamslice(xi,yi,zi,ui,vi,wi,[],0,[]); view(0,0)


[ 本帖最后由 ChaChing 于 2010-7-18 23:49 编辑 ]

ChaChing 发表于 2010-7-18 23:51

...如果我只想要xy, xz, yz方向的投影(主要是把实物“线”形态考虑进去),那我能不能先取出其剖面流场数据 ...
或许这也是个好方法!

guohf 发表于 2010-7-19 09:53

回复 9楼 ChaChing 的帖子

非常感谢。代码中的哪 些命令我都没用过,换句话说,对MATLAB这部分一点不熟,要好好看下,试试。

我的数据太大,内存小的话,就有点 死机似的。

还有几个问题先问下:

1) Volume Visualization在MATLAB里指的是什么?是画三维图用的命令吗?

2) 我的流场数据就是流场网格点对应的速度值,这还需meshgrid去内插点吗?

3) 我的几何图形是圆柱体,若先取出其剖面流场数据,再和“线”投影叠加的话,不知该取哪些面?我想纵剖面可取中剖面,但横截面(圆面)就不知该取哪个了?

谢谢

[ 本帖最后由 guohf 于 2010-7-19 09:54 编辑 ]

ChaChing 发表于 2010-7-19 16:10

回复 11楼 guohf 的帖子

1)帮助文献看看Volume Visualization此章节
2)LZ原始资料为一列, 并非streamslice规定的输入格式(3维,m*n*p), 因不清楚LZ格点间的特性, 随意内插了30点
3)横截面(圆面)该取哪个截面, 应该取决於流场的特性! 个人并不清楚LZ的详细模拟情况!
有些术语怕使用不同, 希望有说明白

guohf 发表于 2010-7-19 20:46

回复 12楼 ChaChing 的帖子

谢谢指点,先研究学习一下,有问题再请教。
页: [1]
查看完整版本: 请问怎样将两结果(流场速度和线形态)叠加到一张图上?