流线图

流线图用有向曲线表现向量场的特征。用streamline函数根据二维和三维向量数据绘流线图。调用格式为:[大谦MATLAB,dqmatlab点com]

h=streamline(X,Y,Z,U,V,W,startx,starty,startz) 绘三维向量数据U,V,W的流线图。数组X,Y,Z定义U,V,W的坐标。startx,starty,startz定义流线的起点位置。输出变量h包含直线句柄向量,每条流线对应一个句柄。

h=streamline(U,V,W,startx,starty,startz) 假设数组X,Y和Z由[X,Y,Z]=meshgrid (1:N,1:M,1:P)定义,其中[M,N,P]=size(U)。

h=streamline(XYZ) 假设 XYZ 为预先计算好的顶点数组的单元数组。

h=streamline(X,Y,U,V,startx,starty) 绘二维向量数据U,V的流线图。数组X,Y定义U,V的坐标。startx和starty定义流线的起点位置。输出变量h包含一个直线句柄向量,一条流线对应一个句柄。

h=streamline(U,V,startx,starty) 假设数组X和Y由[X,Y]=meshgrid(1:N,1:M)定义,其中 [M,N]=size(U)。

h=streamline(XY) 假设XY为预先计算好的顶点数组的单元数组。

streamline(...,options) 指定创建流线时所用的选项。

本例用4维函数生成4维体数据x,y,z,vv,然后用vv得到x,y,z 3个方向上的梯度。指定流线的起点sx,sy,sz,使用streamline函数生成流线图。为了衬托流线图,创建半透明等值面。

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);  %流线起点
>> h=streamline(x,y,z,u,v,w,sx,sy,sz);  %绘制流线图
>> view(3)
>> hold on
>> hi=patch(isosurface(x,y,z,vv,4));  %生成vv=4对应的等值面,转换为面片
>> hi.EdgeColor='none';  %面片中小面的边设置为无色
>> hi.FaceColor='r';  %面片中小面颜色为红色
>> camlight  %添加光照
>> hi.FaceAlpha=.7;  %面片半透明
>> hold off

生成图6-1。

Document Image
\[\]

图6-1 流线图