流管图用不同粗细和颜色的管道表现体数据的向量特征。用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函数生成流带图。
>> [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。
图6-5 流管图