流管图

流管图用不同粗细和颜色的管道表现体数据的向量特征。用streamtube函数绘流管图。[大谦MATLAB,dqmatlab点com]

用streamtube函数创建一个三维流管图。调用格式为:

streamtube(X,Y,Z,U,V,W,startx,starty,startz) 根据向量体积数据U,V,W绘流管图。数组X,Y,Z定义U,V,W的坐标。startx, starty和startz定义管中心处流线的起点。

streamtube(U,V,W,startx,starty,startz) 假设X,Y和Z由下面的语句确定:

[X,Y,Z]=meshgrid(1:n,1:m,1:p)

其中,[m,n,p]=size(U)。

streamtube(vertices,X,Y,Z,divergence) 假设流线顶点和差异已经预先算得。vertices为流线顶点的单元数组。X,Y,Z和divergence为三维数组。

streamtube(vertices,divergence) 假定X,Y和Z由下面的语句确定:

[X,Y,Z]=meshgrid(1:n,1:m,1:p)

其中,[m,n,p]=size(divergence)。

streamtube(vertices,width) 在向量单元数组width中指定圆管的宽度。vertices中每个对应元素的大小必须与width相等。width 也可以是标量,为所有流管的宽度指定大小。

streamtube(vertices) 自动选择宽度。

streamtube(...,[scale n]) 用scale参数确定管体的宽度。默认时scale=1。n为沿圆管周边分布的点数。默认时n=20。

h=streamtube(...z) 返回surface对象的句柄向量。

本例用4维函数生成4维体数据x,y,z,vv,然后用vv得到x,y,z 3个方向上的梯度。指定起点sx,sy,sz,使用streamtube函数生成流带图。

code.matlab
>> [x,y,z]=meshgrid(-2:.2:2);  %生成绘图数据
>> vv=x.^2+y.^2+z.^2-x.*y+z+1;
>> [u,v,w]=gradient(vv);  %3个方向的梯度
>> [sx,sy,sz]=meshgrid(-2:2);  %起点
>> ht=streamtube(x,y,z,u,v,w,sx,sy,sz);  %绘制流管图
>> view(3)  %三维视图
>> shading interp;  %插值着色
>> camlight  %添加光照

生成图6-5。

Document Image
\[\]

图6-5 流管图