官术网_书友最值得收藏!

2.3 流場圖繪制

流體運動所占據的空間稱為流場。流場圖能以更加立體的方式顯示多維數據之間的內在聯系和變化趨勢。本節介紹了4個流場圖繪制函數。

2.3.1 coneplot——流錐圖

【功能】 繪制流錐圖。

【語法介紹】

● coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz) 用圓錐體繪制速度向量圖,圓錐體指向速度向量的方向,其長度與速度向量的大小成比例。(X(i),Y(i),Z(i))定義三維向量場的坐標;(U(i),V(i),W(i))定義三維向量場。數組X,Y,Z,U,V,W的大小、單調性和三維特征必須相同(如由meshgrid產生);(Cx,Cy,Cz)定義向量場中圓錐體的位置。

● coneplot(U,V,W,Cx,Cy,Cz) 等 價 于 coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz),其 中, [X,Y,Z]=meshgrid(1:n,1:m,1:p),[m,n,p]=size(U)。

● coneplot(...,s) 設定圓錐體的顯示比例s,以使它們能夠匹配圖形的大小。默認值s=1;若s=0,則不自動設置圓錐體的比例。

● coneplot(...,color) 在向量場中進行color數組的插值,然后根據插值確定圓錐體的顏色。數組color的維數必須與數組U,V,W的維數相同。

● coneplot(...,'quiver') 繪制箭頭代替繪制圓錐體。

● coneplot(...,'method') 指定圓錐的位置插值的方法。method取值為linea(r 線性插值)、cubic(三次插值)和nearest(最小距離插值),默認為線性插值。

● coneplot(X,Y,Z,U,V,W,'nointerp') 不將圓錐的位置插值到區域中。

● coneplot(axes_handle,...) 在句柄為axes_handle的軸上繪制流錐圖。

● h=coneplot(...) 返回繪制圓錐體的陰影對象句柄給h。

【實例】 繪制流錐圖。

        >> %導入數據
        load wind
        xmin = min(x(:));
        xmax = max(x(:));
        ymin = min(y(:));
        ymax = max(y(:));
        zmin = min(z(:));
        %繪制流錐圖
        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);            %繪制流錐圖,如圖2.93所示

圖2.93 繪制流錐圖

        set(hcones,'FaceColor','red','EdgeColor','none')
        %添加立體邊框
        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
        %設置坐標軸
        axis tight; view(30,40); axis off
        camproj perspective; camzoom(1.5)
        %給場景添加燈光
        camlight right; lighting phong
        set(hsurfaces,'AmbientStrength',.6)
        set(hcones,'DiffuseStrength',.8)

2.3.2 streamline——流線圖

【功能】 繪制流線圖。

【語法介紹】

● streamline(X,Y,Z,U,V,W,startx,starty,startz) 繪制三維數組U,V,W的流線圖。(X,Y,Z)是單調的網格數據(如由 meshgrid 函數生成的數據),表示(U,V,W)的坐標;(startx,starty,startz)定義流線的起點位置。

● streamline(U,V,W,startx,starty,startz) 等價于streamline(X,Y,Z,U,V,W,startx,starty,startz),其中,[X,Y,Z]=meshgrid(1:N,1:M,1:P),[M,N,P]=size(U),即[M,N,P]為U的大小。

● streamline(X,Y,Z) 繪制流線圖。參量X,Y,Z由stream3函數產生(stream3函數用于產生三維流線數據)。

● streamline(X,Y,U,V,startx,starty) 繪制矩陣 U,V 的流線圖。(X,Y)為(U,V)的坐標;(startx,starty)定義流線的起點位置。

● streamline(U,V,startx,starty) 等價于 streamline(X,Y,U,V,startx,starty),其中,[X,Y]=meshgrid(1:N,1:M),[M,N]=size(U),即[M,N]為矩陣U的大小。

● streamline(X,Y) 繪制流線圖。參量X,Y由stream2函數產生(stream2函數用于產生二維流線數據)。

● streamline(...,options) 參量option為繪制流線時所用的選項,為標量或二元向量,當option為標量時,表示流線的步長。當option為二元向量時,表示流線的步長和最大值。

● streamline(axes_handle,...) 在句柄為axes_handle的軸上繪制流線圖。

● h=streamline(...) 返回流線句柄向量h,向量中的每個元素代表一個流線。

【實例】 繪制流線圖。

            >>%導入數據
            load wind
            [sx,sy,sz]=meshgrid(80,20:10:50,0:5:15);  %生成單調的網格數據
            %繪制流線圖,如圖2.94所示
            h = streamline(x,y,z,u,v,w,sx,sy,sz);
            set(h,'Color','red')

圖2.94 繪制流線圖

2.3.3 streamtube——流管圖

【功能】 繪制三維流管圖。

【語法介紹】

● streamtube(X,Y,Z,U,V,W,startx,starty,startz) 繪制三維數組 U,V,W 的流管圖。(X,Y,Z)是單調的網格數據(如由 meshgrid 函數生成的數據),表示(U,V,W) 的坐標;(startx,starty,startz)定義流管的起點位置。

● streamtube(U,V,W,startx,starty,startz) 等價于streamtube (X,Y,Z,U,V,W,startx,starty,startz),其中,[X,Y,Z]=meshgrid(1:N,1:M,1:P),[M,N,P]=size(U),即[M,N,P]為數組U的大小。

● streamtube(vertices,X,Y,Z,divergence) 假設預先計算流管向量和差異。vertices為流管頂點的坐標數組,由stream3函數生成(stream3函數用于產生三維流線數據),X,Y,Z和divergence均為三維數組。

● streamtube(vertices,divergence) 假設定義(U,V,W)的坐標的數據(X,Y,Z)由下面的語句定義:[X,Y,Z]=meshgrid(1:N,1:M,1:P),其中,[M,N,P]=size(divergence),即[M,N,P]為數組divergence的大小。其他參量及結果同上。

● streamtube(vertices,width) 參量width表示圓管的寬度。width與數組vertices同維或width是一個標量。

● streamtube(vertices) 自動選擇圓管的寬度。

● streamtube(...,[scale n]) 按scale參數定義流管的寬度,默認值scale=1。當scale=0時自動定義寬度。n為沿圓管周邊分布的點數,默認值n=20。

● streamtube(axes_handle,...) 在句柄為axes_handle的軸上繪制流管圖。

● h=streamtube(...,z) 返回流管圖表面對象的句柄給向量h。

【實例1】 繪制流管圖。

        >> %導入數據
        load wind
        [sx sy sz]=meshgrid(80,20:10:50,0:5:15);            %生成單調的網格數據
        daspect([1 1 1])                                    %設置坐標軸數據比例
        %繪制流管圖,如圖2.95所示
        streamtube(x,y,z,u,v,w,sx,sy,sz);
        %定義坐標軸和光照
        axis tight
        shading interp;
        camlight;
        lighting gouraud

圖2.95 繪制流管圖

【實例2】 繪制流管圖,向量數據由stream3提供。

        >> %導入數據
        load wind
        [sx sy sz]=meshgrid(80,20:10:50,0:5:15);        %生成單調的網格數據
        daspect([1 1 1])                                %設置坐標軸數據比例
        %生成向量數據
        verts = stream3(x,y,z,u,v,w,sx,sy,sz);
        div = divergence(x,y,z,u,v,w);
        %繪制流管圖,如圖2.96所示
        streamtube(verts,x,y,z,-div);
        %定義坐標軸和光照
        axis tight
        shading interp
        camlight
        lighting gouraud

圖2.96 繪制流管圖,向量數據由stream3提供

2.3.4 streamribbons——流帶圖

【功能】 繪制三維流帶圖。

【語法介紹】

● streamribbon(X,Y,Z,U,V,W,startx,starty,startz) 繪制三維數組 U,V,W 的流帶圖。(X,Y,Z)是單調的網格數據(如由 meshgrid 函數生成的數據),表示(U,V,W)的坐標;(startx,starty,startz)定義流帶的起點位置。

● streamribbon(U,V,W,startx,starty,startz) 等價于 streamribbon(X,Y,Z,U,V,W,startx,starty, startz),其中,[X,Y,Z]=meshgrid(1:N,1:M,1:P),[M,N,P]=size(U),即[M,N,P]為矩陣U的大小。

● streamribbon(vertices,X,Y,Z,cav,speed) 假設預先計算流帶方向數組 vertices、卷曲角速率cav和流速speed。參量vertices通常由stream3函數生成(stream3函數用于產生三維流線數據)。X,Y,Z,cav和speed均為三維數組。

● streamribbon(vertices,cav,speed) 假設定義(U,V,W)的坐標的數據(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。

● streamribbon(axes_handle,...) 在句柄為axes_handle的軸上繪制流帶圖。

● h=streamribbon(...) 返回流帶圖表面對象的句柄給向量h。

【實例】 繪制流帶圖。

        >> %導入數據
        load wind
        [sx sy sz]=meshgrid(80,20:10:50,0:5:15);        %生成單調的網格數據
        daspect([1 1 1])                                %設置坐標軸數據比例
        %繪制流帶圖,如圖2.97所示
        streamribbon(x,y,z,u,v,w,sx,sy,sz);
        % 定義坐標軸和光照
        axis tight
        shading interp;
        camlight;
        lighting gouraud

圖2.97 繪制流帶圖

主站蜘蛛池模板: 房产| 犍为县| 于都县| 青龙| 邢台县| 清苑县| 印江| 厦门市| 鹿邑县| 石泉县| 西安市| 宜昌市| 师宗县| 柳河县| 嘉义县| 石台县| 墨竹工卡县| 伊春市| 汝城县| 嘉兴市| 运城市| 西峡县| 广水市| 陵川县| 阜康市| 陆河县| 永仁县| 洪泽县| 桃园市| 崇阳县| 宜宾市| 科技| 延长县| 台中县| 内黄县| 冕宁县| 西藏| 庆云县| 高密市| 永嘉县| 海晏县|