加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab科学计算可视化——基于wind的向量数据集合

(2010-12-23 10:58:50)
标签:

宋体

等值线图

流线图

科学计算

向量场

校园

云南财经大学实验报告

 

 

 

系 (院):        统计与数学学院        

专    业:        信息与计算科学        

班    级:           信计07-1           

             B3组(柏厚云)        

课程名称:           综合实验           

实验时间:    2010-12-1——2010-12-16     

指导教师:            陈龙伟            

 

 

 

云南财经大学教务处制

填表说明

 

 

 

1. 实验名称  要用最简练的语言反映实验的内容。

2. 实验目的  目的要明确,要抓住重点,可以从理论和实践两个方面考虑。在理论上,验证定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的技能技巧和程序调试的方法。一般需要说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。

3. 实验环境  实验用的软硬件环境(配置)。

4. 实验内容(算法、程序、步骤和方法)这是实验报告极其重要的内容。这部分要写明依据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤。还应该画出流程图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。

5. 结论(结果)  即根据实验过程中所见到现象和测得的数据,作出结论。

6. 小结  对本次实验的思考和建议。

7. 备注或说明  可填写实验成功或失败的原因,实验后的心得体会等。

8. 指导教师评分  指导教师根据本次实验的预习、表现、操作的实验报告的撰写客观进行评分、签名,并记入成绩。

 

 

 

实验名称

 

Matlab科学计算可视化——基于wind的向量数据集合(它代表流过北美洲的气流)分析气流变化

 

实验目的

 

计算机技术的仿真,使大型数值计算得以实现。本实验选取了Matlab自带的wind向量数据集,利用Matlab提供的对标量数据和矢量数据进行可视化的函数,利用这些函数绘制等值线图、矢量图、等值面图、等帽盖图、剖面图、流线图、流锥图、流沙图、流带图、流管图、卷曲图等多种图形。

利用计算机生成的数据绘图,从而以一种很直观的方式表现流过北美洲的气流变化情况,非常有利于信息提取和反馈决策。

 

实验内容(算法、程序、步骤和方法)

一、概述

    随着计算机科学技术的发展,科学计算问题已经在一定程度上得到了解决。采用一些先进的算法,甚至可以用具有高度真实感的实体模型来模拟科学计算的过程和结果。发展到现在,科学计算可视化已经是一门新的交叉学科了。 

MATLAB提供了比较完备的科学计算可视化函数。利用这些函数,可以绘制二维/三维的矢量图、等值线图、剖面图以及流线图、流锥图、流管图、流带图和卷曲图等表现流动特征的图形;利用快照技术,可以实现动画。而且,在  MATLAB 中还可以将各种图形组合起来使用,具有更强的表现效果。

本实验采用的数据来自Matlab自带的wind向量数据集合,它代表流过北美洲的气流。具体数据可以利用 load wind Matlab中提取出来。

二、实验器材(设备、元器件)

操作平台:Windows7 操作系统

硬件设备:台式

软件:MATLAB2009b

三、实验所用数据、公式、函数

1、数据:x,y,z,u,v,w 来自Matlab自带的wind向量数据集合,皆为三维向量数据。

2、公式:wind_speed=file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-17528.png (气流速度,即向量场大小)

         cav=curl(x,y,z,u,v,w)   (卷曲角速度) 

3、函数:contour(等值线图)、contourf(填充等值线图)、contour3(三维等值线图)、streamline(向量数据的流线图)、stream3(三维流线图)、stream2(二维流线图)、quiver(矢量图)、quiver(三维矢量图)、cur(向量场的卷曲和角速度)、coneplot(三维流锥图)、streamtube(三维流管图)、streamribbon(流带图)、streamparticles(流沙图)、streamslice(切片面板中叠加流线图)、slice(剖面图)、isosurface(等值面图)

四、试验内容(方法、程序、说明)

1、向量数据的流线图(剖面图、等值线图、流线图)

   用流线跟踪气流速度(wind_speed)。 

   用切片面板显示数据的横断面视图(剖面图)。 

   用切片面板上的等值线改进切片面板颜色的可视性。 

1)确定坐标范围    装载数据并确定切片面板和等值线图所处的位置。 

 load wind              %载入x,y,z,u,v,w的数据

 xmin=min(x(:));

 xmax=max(x(:));

 ymax=max(y(:));

 zmin=min(z(:));

2)添加切片面板(剖面图)    计算向量场的大小(它代表气流流速),为 slice 命令生成标量数据。沿 轴在 xmin 处、沿 轴在 ymax 处、沿 轴在 zmin 处创建切片面板图。指定表面颜色,用切片的颜色指示气流速度。

 wind_speed=sqrt(u.^2+v.^2+w.^2)    %计算出向量场大小(气流流速

 hsurfaces=slice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin);

 set(hsurfaces,'FaceColor','interp','EdgeColor','none')

生成图形如图1.1所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-10963.png

1.1  添加切片面板(剖面图)

3)添加等值线到切片面板    在切片面板上绘色谱等值线图。 

 hcont=contourslice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin);

 set(hcont,'EdgeColor',[.7,.7,.7],'LineWidth',.5)

生成图形如图1.2所示。

4)定义流线    这里,所有的流线起始于 x=80 处,并在 方向 2050方向 015 的范围内扩展。保存流线的句柄并设置线条的宽度和颜色。 

 [sx,sy,sz] meshgrid(80,20:10:50,0:5:15); 

hlines streamline(x,y,z,u,v,w,sx,sy,sz); 

set(hlines,'LineWidth',2,'Color','r')

生成图形如图1.3所示。

5)定义视角    抬升视角,扩展 轴,使得图形的阅读更加容易。 

view(3) 

daspect([2,2,1]) 

axis tight 

生成图形如图1.4所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-2892.png

1.2  添加等值线(等值线图)

 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-947.png

1.3  添加流线(流线图)

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-4026.png

1.4  定义视角

2、 用流动条带显示卷曲

    与流线一样,流带也可以演示流动的方向,同时它还能演示流体沿轴线的旋转。使用streamribbon 函数,可以指定流带上每个顶点的扭曲角度(用弧度表示)。 

与 curl 函数联合使用,流带图可以帮助显示向量场的卷曲角速度。 

1)选择进行绘图的数据子集    用 subvolume 函数在 wind 数据集中选择一个感兴趣的区域,首先用所有的数据集进行绘图可以帮助作出选择。

load wind 

lims [100.64 116.67 17.25 28.75 -0.02 6.86];    %选择一个区域

[x,y,z,u,v,w] subvolume(x,y,z,u,v,w,lims); 

2)计算卷曲角速度和气流流速 

cav curl(x,y,z,u,v,w); 

wind_speed sqrt(u.^2 v.^2 w.^2); 

3)生成流带图 

>> [sx sy sz] meshgrid(110,20:5:30,1:5); 

>> verts stream3(x,y,z,u,v,w,sx,sy,sz,.5); 

>> streamribbon(verts,x,y,z,cav,wind_speed,2); 

>> set(h,'FaceColor','r','EdgeColor',[.7 .7 .7],'AmbientStrength',.6)

生成图形如图2.1所示。

4)设置视角并添加光照    用  volumebounds  命令设置坐标轴和颜色的范围比较方便。添加网格,设置三维视图。camlight 函数设置光线位置,lighting 函数将光照方法设置为 Phong。 

>> axis(volumebounds(x,y,z,wind_speed))

>> grid on

>> view(3) 

>> camlight right;

>> set(gcf,'Renderer','zbuffer'); lighting phong 

生成图形如图2.2所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-989.png

2.1  二维流带图

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-14076.png

2.2  三维流带图

 

3、 用流管显示差异 

    流管与流线相似,但流管有宽度,提供了另一维上的信息。默认时,MATLAB 用管体的宽度表示向量场的差异。流管表示气流数据集合的流动方向和向量场的差异。 

    用不同颜色表示的切片面板指示气流速度,添加等值线使得可视程度更高。 

输入参数包括体积、向量场组分和流管起点位置的坐标。 

1)装入数据,计算需要的数值。 

 第一步装入数据并计算需要绘图的数值。这些数值包括:   

   切片面板的位置(的最小值、的最小值和高程)。 

   流管起点的最小值。 

   气流的流速(向量场的大小)。 

load wind 

xmin min(x(:)); 

xmax max(x(:)); 

ymin min(y(:)); 

alt 7.356;               流管起点的最小值

wind_speed sqrt(u.^2 v.^2 w.^2); 

2)绘切片面板    绘切片面板,设置表面属性,创建一个具有平滑颜色的切片。从 hsv色谱图中取 16 种颜色。

hslice slice(x,y,z,wind_speed,xmax,ymin,alt); 

set(hslice,'FaceColor','interp','EdgeColor','none'

colormap hsv(16)

生成图形如图3.1所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-9849.png

3.1  切片面板

3)添加等值线图到切片面板中    调整等值线间距,使得在切片面板中直线与颜色边界匹配。调用 caxis 函数,获得当前颜色的范围;设置 contourslice 函数的参数确定内插的方法。

color_lim caxis; 

cont_intervals linspace(color_lim(1),color_lim(2),17); 

hcont contourslice(x,y,z,wind_speed,xmax,ymin,alt,cont_intervals,'linear'); 

set(hcont,'EdgeColor',[.4 .4 .4],'LineWidth',1) 

生成图形如图3.2所示。

(4)创建流管图    使用网格线创建流管起点数组,其起点位于最小 值处,在 方向上从 20 到 50,在 方向上则位于某一面板中。 流管图在指定的地点绘制,其宽度是默认宽度的 1.25 倍,以强调差异显示。向量[1.25 30]中的第二个元素指示沿管的周长方向的点数(默认值为 20)。 在调用 streamtube  函数之前还要设置数据方向比(daspect)。

在通过设置表面属性控制流管的表面特性以前,流管为表面对象。这里将表面属性设置为高亮照射、红色表面。

[sx,sy,sz] meshgrid(xmin,20:3:50,alt); 

daspect([1,1,1]) 

htubes streamtube(x,y,z,u,v,w,sx,sy,sz,[1.25 30]); 

set(htubes,'EdgeColor','none','FaceColor','r','AmbientStrength',.5)

生成图形如图3.3所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-22306.png

3.2  等值线图 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-15031.png

3.3  流管图

5)定义视角,添加光照    最后一步是定义视角,添加光照。 

view(-100,30) 

axis(volumebounds(x,y,z,wind_speed)) 

set(gca,'Projection','perspective'

camlight left 

生成图形如图3.4所示。

 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-5753.png

3.4  光照后流管图

 

4、创建流动微粒快照 

    流动微粒快照对于向量场流动方向和流动速度的可视化是很有帮助的。"particles"  (用任意线型标记表示)沿特定的流线进行流体跟踪。快照中每一个微粒的速度与流线上任意给定点处向量场的大小成比例。 

1)指定绘图数据范围的起点  通过指定近似起点来确定所绘图形的体积区域。这里,流线的起点为 100,  界于 20 和 50 之间,并且在 的面板上。

load wind 

[sx sy sz] meshgrid(100,20:2:50,5); 

2)创建流线图   表示微粒流动途径。这里使用流线跟踪快照微粒的流动路径。 

verts stream3(x,y,z,u,v,w,sx,sy,sz); 

sl streamline(verts); 

生成图形如图4.1所示。

3)定义视图    下面的设置提供了一个快照的清晰视图。 

    所选择的视点显示了包含大部分流线的平面和包含螺旋线的平面。选择数据方向比为[2 0.125]。设置坐标轴范围,使之与数据范围匹配,并绘坐标轴方框。 

view(-10.5,18) 

daspect([2 0.125]) 

axis tightbox on 

生成图形如图4.2所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-31267.png

4.1  二维流线图

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-2821.png

4.2  三维流沙图

4)计算流动微粒顶点    第一步确定沿流线的微粒。interpstreamspeed  函数返回基于流线顶点的数据和向量数据的速度。将 DrawMode 属性设置为 fast,使快照的运行速度更快。 

  streamparticles  函数设置下列属性: 

  Animate 属性设置为 10,快照 10 次。 

  ParticleAlignment 属性设置为 on。 

  MarkerFaceColor 属性设置为 red。 

  Marker 属性设置为 o,绘圆形标记。 

iverts interpstreamspeed(x,y,z,u,v,w,verts,0.05); 

set(gca,'drawmode','fast'); 

streamparticles(iverts,15,'Animate',10,'ParticleAlignment','on','MarkerEdgeColor','none','MarkerFaceColor','red','Marker','o');

生成图形如图4.3所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-690.png

4.3  颗粒流动动态流沙图

5、带圆锥图的向量场(等帽盖图、流锥图)

    绘制 wind 数据的速率向量场。绘一个等表面,用于提供圆锥图的可视承接,并提供各种方法,为一系列圆锥选择指定的数据值。进行光照,使等表面的形状清晰可见。使用透视投影、相机位置设定和视角调整等方法确定最后的视角。

(1)创建等表面    为圆锥图在提供可视承接的矩形空间中显示等表面。

   计算向量场的大小,它代表气流速度; 

   使用等表面和阴影来画一个演示矩形空间中气流流速与特定值相等的等表面。等表面内的矩形区域具有较高的流速,表面外的区域内流速较低; 

   使用 isonormals 函数计算等表面的顶点范数。 

   设置等表面的可视属性,设置其前景色为红色,无边界。 

load wind 

wind_speed sqrt(u.^2 v.^2 w.^2); 

hiso patch(isosurface(x,y,z,wind_speed,40)); 

isonormals(x,y,z,wind_speed,hiso) 

set(hiso,'FaceColor','red','EdgeColor','none');

生成图形如图5.1所示。

2)添加等帽盖到等表面 

hcap patch(isocaps(x,y,z,wind_speed,40),'FaceColor','interp','EdgeColor','none'); 

colormap hsv 

生成图形如图5.2所示。

3)创建第一个圆锥集    使用 daspect,在调用 coneplot 函数之前设置坐标轴的数据方向比,这样 MATLAB 可以确定圆锥的合适大小。 

    通过计算另外的具有更小相等值的等表面来确定放置圆锥的点(所以圆锥显示在第一个等表面之外),并用 reducepatch 函数减小侧面和顶点个数(这样,图上就不会因为有太多的锥体而显得拥挤)。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-17118.png

5.1  创建等表面 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-23085.png

5.2  等帽盖图

 

绘锥体并设置表面颜色为蓝色,不设置边缘颜色。 

daspect([1,1,1]); 

[f verts] reducepatch(isosurface(x,y,z,wind_speed,30),0.07);   

h1 coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),3); 

set(h1,'FaceColor','blue','EdgeColor','none'); 

生成图形如图5.3所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-25721.png

5.3  创建圆锥一

4)创建第二个圆锥集    在扩展范围内的某值处创建第二个点集。绘第二个圆锥集合并设置其表面颜色为绿色,无边缘颜色。 

xrange linspace(min(x(:)),max(x(:)),10); 

yrange linspace(min(y(:)),max(y(:)),10); 

zrange 3:4:15; 

[cx,cy,cz] meshgrid(xrange,yrange,zrange); 

h2 coneplot(x,y,z,u,v,w,cx,cy,cz,2); 

set(h2,'FaceColor','green','EdgeColor','none'); 

生成图形如图5.4所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-3546.png

5.4  创建圆锥二

5)定义视角,设置投影类型,添加光照    使用 axis 命令,令坐标轴范围等于最大值与最小值的差,并将图形封闭在盒形体积中,改善图形的整体性。设置投影类型为透视投影,使整个图形更自然。设置视点并缩小图形,使视野更大。添加光源并用  Phong  光照方法得到等表面的光照最平滑。增加  isocaps上的背景光照长度,使它们更亮。效果如图 5.5 所示。 

axis tight 

box on 

camproj perspective 

camzoom(1.25) 

view(65,45)

camlight(-45,45) 

set(gcf,'Renderer','zbuffer');   

lighting phong 

set(hcap,'AmbientStrength',.6) 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-19995.png

5.5 各种设置完成(流锥图)

 

6 切片流线图 

    切片流线图是在三维图的图切剖面上叠加流线图。利用该图可以显示三维体积内部某个特定剖面上的流动特征。用 streamslice 函数实现。

在这里利用 wind 数据创建一个 z=5 处的流动切片图,效果如图 6.1 所示。 

load wind 

daspect([1 1]) 

streamslice(x,y,z,u,v,w,[],[],[5]) 

axis tight 

    然后用 streamslice 函数计算流线和方向箭头的顶点数据。streamline 函数将利用该数据绘直线和箭头,效果如图 6.2 所示。 

load wind 

daspect([1 1]) 

[verts averts] streamslice(u,v,w,10,10,10);   

streamline([verts averts]) 

spd sqrt(u.^2 v.^2 w.^2); 

hold on  

slice(spd,10,10,10); 

colormap(hot) 

shading interp 

view(30,50); axis(volumebounds(spd)); 

camlight; material([.5 0])

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-22682.png

 6.1   流到切片图 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-5643.png

 6.2   切片流线图

7  流锥图 

    用 coneplot 函数在三维向量场中用圆锥体绘制速率向量图,在这里绘制向量空间数据的速率向量圆锥体图,该数据代表方形空间区域中气流的流动。最后生成的图形采用了一些方法使得数据显示的效果更好,包括: 

   圆锥体图形表示气流速率的大小和方向。 

   数据边界处的分片面板显示了三维区域内部圆锥体的可视化承接。 

   一定方向的光照提供了圆锥体方位的视图序列。 

   通过选择视点、投影类型和放大来最好地重现数据的内容信息。

1)装载数据 

    这里用到 winds 数据集,其中包括 个三维数组:u, 和  指定每个点上向量元素,x, y和 指定坐标位置。为了指定圆锥体的放置位置,可以首先确定数据的范围。 

load wind 

xmin min(x(:)); 

xmax max(x(:)); 

ymin min(y(:)); 

ymax max(y(:)); 

zmin min(z(:)); 

2创建圆锥体图 

    确定在数据空间的什么位置绘圆锥图。下面分 步选择 和 的完整范围,在 z中分 步选择 315 的范围。  调用 coneplot 函数之前,使用 daspect 设置坐标轴的数据方向比率,使得 MATLAB 可以确定圆锥体的合适大小。 绘圆锥体,设置比例因子为 5,使得圆锥体比默认大小更大。设置每个圆锥体的颜色(表面色,边缘色)。 

daspect([2,2,1]) 

xrange linspace(xmin,xmax,8); 

yrange linspace(ymin,ymax,8); 

zrange 3:4:15; 

[cx cy cz] meshgrid(xrange,yrange,zrange); 

hcones coneplot(x,y,z,u,v,w,cx,cy,cz,5); 

set(hcones,'FaceColor','red','EdgeColor','none')

绘制结果如图 7.1 所示。

3)添加分片面板 

    计算向量场的大小(它代表风的速度),为 slice 命令生成标量数据。沿 轴在 xmin xmax 处,沿 轴在 ymin 和 ymax 处创建分片面板。指定内插面颜色,分片的着色指示风速,不绘边缘,效果如图 7.2 所示。 

hold on 

wind_speed sqrt(u.^2 v.^2 w.^2); 

hsurfaces slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin); 

set(hsurfaces,'FaceColor','interp','EdgeColor','none'

hold off 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-19159.png

 7.1  圆锥体图 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-6471.png

图 7.2   添加分片面板                                                                                             

4)定义视图,添加光线

使用  axis  命令设置坐标轴的范围与数据的范围相等。设置视图方向为  azimuth   30elevation 40。使图尽量大。

光源会影响分片面板(表面)和圆锥体(阴影)。在相机右侧给光,给圆锥体和分片面板一个平滑、三维的表面。对于每个分片面板,增加 AmbientStrength 属性的值,改进深蓝色的可视性,增加 DiffuseStrength 属性的值,加亮显示这些圆锥体,并显示特殊的反射光影。效果如图 7.3 所示。 

axis tightview(30,40); axis off 

camproj perspectivecamzoom(1.5)                                      

camlight rightlighting phong 

set(hsurfaces,'AmbientStrength',.6) 

set(hcones,'DiffuseStrength',.8)

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-2801.png

 7.3   各种设置后 (流锥图)

8  流沙图(动态流动微粒) 

   MATLAB 可以用流动的点来表示物体的流动,称为流沙图。它用 streamparticles 函数来实现。 

    这里将流线和流沙快照组合起来,interpstreamspeed 函数控制快照的速度。将坐标轴的 DrawMode 属性设置为 fast,将使快照速度更快,效果如图 8.1 所示。

load wind 

[sx sy sz] meshgrid(80,20:1:55,5); 

verts stream3(x,y,z,u,v,w,sx,sy,sz); 

sl streamline(verts); 

iverts interpstreamspeed(x,y,z,u,v,w,verts,.025); 

axis tightview(30,30); daspect([1 .125]) 

camproj perspectivecamva(8) 

set(gca,'DrawMode','fast'

box on 

streamparticles(iverts,35,'animate',10,'ParticleAlignment','on')

    使用 z=5 处面板的流线对沿这些直线的流动进行快照,如图 8.2 所示。 

load wind 

daspect([1 1]); view(2) 

[verts averts] streamslice(x,y,z,u,v,w,[],[],[5]);   

sl streamline([verts averts]); 

axis tight off

set(sl,'Visible','off'

iverts interpstreamspeed(x,y,z,u,v,w,verts,.05); 

set(gca,'DrawMode','fast','Position',[0 1],'ZLim',[4.9 5.1]) 

set(gcf,'Color','black'

streamparticles(iverts,200,'Animate',100,'FrameRate',40,'MarkerSize',10,'MarkerFaceColor','yellow')

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-29877.png

 8.1  流沙图 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-14865.png

 8.2   流动流沙

9 流带图 

    流带图用飘动的条带来表现物体的流动(本实验中是气流的流动)。用 streamribbon 函数创建一个三维流带图。

    使用 wind 数据集来绘制流带图。输入变量包括坐标、向量场组分和流带的起点位置,绘制效果如图 9.1 所示。 

load wind 

[sx sy sz] meshgrid(80,20:10:50,0:5:15); 

daspect([1 1]) 

streamribbon(x,y,z,u,v,w,sx,sy,sz);     %-----定义视图和光照。 

axis tight 

shading interp

view(3); 

camlight; lighting gouraud 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-25911.png

 9.1   流带图之一

    若使用预先计算的顶点数据(stream3)、卷曲平均速率(curl)和流动速度,绘制结果如图 9.2 所示。 

load wind 

[sx sy sz] meshgrid(80,20:10:50,0:5:15); 

daspect([1 1]) 

verts stream3(x,y,z,u,v,w,sx,sy,sz); 

cav curl(x,y,z,u,v,w); 

spd sqrt(u.^2 v.^2 w.^2).*.1; 

streamribbon(verts,x,y,z,cav,spd); 

axis tight 

shading interp 

view(3) 

camlight; lighting gouraud 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-10374.png

 9.2   流带图之二

 

    若指定流带的扭曲角度,效果如图 9.3 所示。 

0:.15:15; 

verts {[cos(t)' sin(t)' (t/3)']}; 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-11530.pngtwistangle {cos(t)'}; 

daspect([1 1]) 

streamribbon(verts,twistangle); 

axis tight 

shading interp

view(3); 

camlight; lighting gouraud 

 

 9.3  流带图之三(右图)

 

    若将圆锥图和流带图组合到一张图中,效果如图 9.4 所示。 

%-----定义三维数组 x, y, z, u, v, w 

xmin -7; xmax 7; 

ymin -7; ymax 7;   

zmin -7; zmax 7;   

linspace(xmin,xmax,30); 

linspace(ymin,ymax,20); 

linspace(zmin,zmax,20); 

[x z] meshgrid(x,y,z); 

y; -x; 0*x+1; 

daspect([1 1]); 

[cx cy cz] meshgrid(linspace(xmin,xmax,30),linspace(ymin,ymax,30),[-3 4]); 

coneplot(x,y,z,u,v,w,cx,cy,cz,'quiver'); 

set(h,'color','k');        %-----绘两个流带集合 

[sx sy sz] meshgrid([-1 1],[-1 1],-6); 

streamribbon(x,y,z,u,v,w,sx,sy,sz); 

[sx sy sz] meshgrid([1:6],[0], -6); 

streamribbon(x,y,z,u,v,w,sx,sy,sz);     %-----定义视图和光照 

shading interp 

view(-30,10) axis off tight 

camproj perspectivecamva(66); camlookat;   

camdolly(0,0,.5,'fixtarget'

camlight 

 

10  流管图 

    流管图是用不同粗细和颜色的空间管道表现物体在空间的流动特征。用 streamtube 函数绘制流管图。 

    利用 wind 数据集生成流管图。输入变量包括坐标、向量场分量和流管的起点位置,绘制效果如图 10.1 所示。

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-7704.png

9.4 流带图之四

 

load wind 

[sx sy sz] meshgrid(80,20:10:50,0:5:15); 

daspect([1 1]) 

streamtube(x,y,z,u,v,w,sx,sy,sz);         

%-----定义视图和光照。 

view(3) 

axis tight 

shading interp

camlight; lighting gouraud 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-20815.png

 10.1  流管图之一

 

    若使用预先计算的顶点数据和差异值绘图,绘制效果如图 10.2 所示。

load wind 

[sx sy sz] meshgrid(80,20:10:50,0:5:15); 

daspect([1 1]) 

verts stream3(x,y,z,u,v,w,sx,sy,sz); 

div divergence(x,y,z,u,v,w); 

streamtube(verts,x,y,z,-div); 

%-----定义视图和光照

view(3) 

axis tight 

shading interp 

camlight; lighting gouraud 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-24058.png

  10.2  流管图之二

 

11  卷曲图 

    卷曲图通过计算向量场的卷曲和角速率来体现物体的流动特征。用 curl 函数绘图。

    使用彩色切片面板在向量场中指定的位置上显示卷曲角速率,结果如图 11.1 所示。 

load wind 

cav curl(x,y,z,u,v,w); 

slice(x,y,z,cav,[90 134],[59],[0]);   

shading interp 

daspect([1 1]); axis tight 

colormap hot(16) 

camlight 

    下面是在体积的一个面板中查看卷曲角速率,并在相同的面板中绘制速率向量图。绘制结果如图 11.2 所示。 

load wind 

4; 

x(:,:,k); y(:,:,k); u(:,:,k); v(:,:,k);   

cav curl(x,y,u,v); 

pcolor(x,y,cav); shading interp 

hold on

quiver(x,y,u,v,'y'

hold off 

colormap copper 

file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-22708.png

 11.1  卷曲图之一

 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml/wps_clip_image-2882.png

 11.2   卷曲图之二

 

 

结论

 

(结果)

 

    实现Matlab科学计算可视化,基于Matlab自带的wind大型向量数据集合(它代表流过北美洲的气流)来分析气流变化。根据这些标量数据和矢量数据绘制出等值线图、剖面图、流线图、流带图、流管图、流锥图、流沙图、等帽盖图、矢量图、卷曲图和动态流动微粒示图。从各个角度来观察分析气流的变化情况,使得数据可视化,更直观的了解气流变化。

 

小结(对本次实验的思考和建议)

 

通过本次实验,我对Matlab有了更多的了解,知道它应用范围之广、作用之大。此高级语言可用于技术计算此开发环境可对代码、文件和数据进行管理交互式工具可以按迭代的方式探查、设计及求解问题二维和三维图形函数可用于可视化数据各种工具可用于构建自定义的图形用户界面自带仿真系统

友好的工作平台和编程环境简单易用的程序语言强大的科学计算机数据处理能力出色的图形处理功能应用广泛的模块集合工具箱

更能有利的解决各种复杂的知识问题。

    科学计算可视化运用计算机图形学或一般图形学的原理和方法,将科学与工程计算等产生的大规模数据转换为图形、图象,以直观的形式表示出来。它涉及计算机图形学、图像处理、计算机视觉、计算机辅助设计及图形用户界面等多个研究领域,已成为当前计算机图形学研究的重要方向。 

 

备注或说明(成功或失败的原因、实验后的心得体会)

 

本实验完成了从各个视角来分析了流过北美洲的气流变化,使我们能更直观的了解气流变化情况。成功之因,借鉴于《Matlab图形图像》这本书,主要运用了本书‘科学计算可视化’这一章节,才能得以实现。不足的方面,未能准确的从矢量图和等值面图两个侧面来分析气流变化。

 

指导教师评分(包括对实验的预习、操作和结果的综合评分):

 

 

 

 

指导教师总评:

 

 

 

 

 

 

 

签名:            日期:           

B3小组组员名单

 

姓名

学号

柏厚云

200705001534

王伟民

200705001506

段丽波

200705001516

杨雁翔

200705001543

李江玲

200705001528

  

200705001517

刘云雄

200705001538

吴明霞

200705001514

 

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:爱情人生
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有