流带图

流带图用扭曲的条带表现体数据的向量特征。用streamribbon函数创建一个三维流带图。调用格式为:

streamribbon(X,Y,Z,U,V,W,startx,starty,startz) 根据向量体积数据U,V和W绘流带图。数组X,Y和Z定义U,V和W的坐标。startx, starty和startz定义条带中心处流带的起点位置。条带的扭曲与向量场的旋度成比例。条带的宽度自动进行计算。一般地,应该在调用streamribbon 函数之前设置DataAspectRatio属性。

streamribbon(U,V,W,startx,starty,startz) 假设X,Y和Z由下面的表达式定义。

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

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

streamribbon(vertices,X,Y,Z,cav,speed) 假设流线顶点、旋度角速率和流速已经预先算得。vertices 为流线顶点的单元数组(就像stream3所创建的)。X,Y,Z,cav和speed为三维数组。

streamribbon(vertices,cav,speed) 假定X,Y和Z由下面的语句确定。

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

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

streamribbon(vertices,twistangle) 使用向量单元数组twistangle确定条带的扭曲,vertices每个对应元素的大小必须和twistangle的相同。

streamribbon(...,width) 设置条带的宽度为width。

h=streamribbon(...) 返回surface对象的句柄h。

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

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);  %起点
>> hr=streamribbon(x,y,z,u,v,w,sx,sy,sz);
>> camlight  %添加光照
>> view(3)
>> for i=1:length(hr)
     hr(i).EdgeColor='none';
end

生成图6-4。

Document Image
\[\]

图6-4 流带图