精华内容
下载资源
问答
  • matlab流场可视化后处理

    万次阅读 多人点赞 2019-03-12 13:41:37
    matlab流场可视化后处理1流体中标量的可视化1.1 云图1.2 切片图绘制1.3 三维等值面图绘制2流体中矢量的可视化2.1 箭头图或速度图2.2 流线图2.4 带节点的流线图2.5流管图和流带图2.6 圆锥体图2.7 粒子动画图3 参考...

    2020.04.01 更新,添加了对新文章的引用
    2021.04 更新,添加了Volume Viewer APP的介绍。把网址改成了超链接形式。

    1流体中标量的可视化

    流体力学中常见的标量为位置、速度绝对值、压强等。

    1.1 云图

    常用的云图绘制有pcolor、image、imagesc、imshow、contourf等函数。
    这里利用matlab自带的wind数据作为演示案例,显示二维云图的速度场。

    close all
    load wind
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    %速度云图
    figure()
    pcolor(x2,y2,sqrt(u2.^2+v2.^2))
    shading interp%插值绘制颜色
    

    绘制结果如下:
    在这里插入图片描述

    1.2 切片图绘制

    切片图常用于可视化复杂的三维流动。
    由于二维计算机屏幕和二维视网膜的限制,人类对垂直于眼球面的速度分量不是很敏感,所以绘制三维可视化的时候一定要注意光照、视角、明暗、反光等信息,辅助人去补全第三维度的信息。

    常用的切片显示函数有contourslice和slice,对应二维的contour和pcolor用法。
    下面以流场的涡量切片图为例,介绍切片图的用法。

    close all
    load wind
    %涡量切片图绘制
    %构建颜色图
    mycmp=[[ones(20,1),(0.05:0.05:1)',(0.05:0.05:1)'];[(1:-0.05:0.05)',(1:-0.05:0.05)',ones(20,1)]];
    cav = curl(x,y,z,u,v,w); %计算旋度
    h = slice(x,y,z,cav,[90 134],59,0); %切片
    shading interp
    daspect([1 1 1]); %坐标轴缩放
    axis tight
    colormap(mycmp);
    caxis([-5,5]) %确定颜色范围,使得颜色图中白色对应0涡量
    camlight %设置光照
    set([h(1),h(2)],'ambientstrength',.6); %调整局部亮度
    

    在这里插入图片描述
    关于切片的更多方法,可以参见matlab的教程:
    Exploring Volumes with Slice Planes利用切片平面探索三维体

    1.3 三维等值面图绘制

    等值面相关的常用函数有:patch、isosurface、isocaps、isocolors、isonormals、reducevolume、subvolume等。
    下面以绘制三维速度等值面为例,介绍等值面的用法。

    close all
    clear
    load wind
    
    figure
    wind_speed = sqrt(u.^2 + v.^2 + w.^2);%速度
    %绘制等值面
    hiso = patch(isosurface(x,y,z,wind_speed,40));
    isonormals(x,y,z,wind_speed,hiso) %平滑
    hiso.FaceColor = 'red'; %等值面上色
    hiso.EdgeColor = 'none';
    %绘制断面
    hcap = patch(isocaps(x,y,z,wind_speed,40),...
       'FaceColor','interp', 'EdgeColor','none');
    colormap hsv
    %调整图片视角光源等
    axis tight 
    set(gca,'BoxStyle','full','Box','on')
    camproj perspective
    %camzoom(1.25)
    view(65,30)
    camlight(-45,45)
    hcap.AmbientStrength = 1;
    lighting gouraud
    daspect([1 1 1]);
    

    在这里插入图片描述

    2流体中矢量的可视化

    流体中常见的矢量有速度矢量、旋度矢量、梯度矢量等。

    2.1 箭头图或速度图

    matlab常用的速度图函数为quiver和quiver3。

    quiver为二维矢量图绘制,用法如下图所示。如果绘制箭头太密集,可以采用间隔采样的方式绘制。

    load wind
    figure()
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    Q=quiver(x2,y2,u2,v2);%详见帮助文档quiver
    Q.AutoScaleFactor=1.2;%更改箭头比例,详见帮助文档Quiver Properties
    

    输出结果如下
    在这里插入图片描述
    quiver3为3维矢量场的绘制。可视化效果不如coneplot函数的圆锥图。
    推荐搭配空间曲面的使用。参见quiver3帮助文档。https://ww2.mathworks.cn/help/matlab/ref/quiver3.html

    load wind
    quiver3(x([5 10],:,:),y([5 10],:,:),z([5 10],:,:),u([5 10],:,:),v([5 10],:,:),w([5 10],:,:))%quiver3
    

    在这里插入图片描述

    2.2 流线图

    matlab中绘制流线常用的函数有:streamline、streamslice、stream2、stream3、interpstreamspeed。

    matlab中标准的流线图streamline需要知道流场的起始点,但通常对于复杂流场,起始点没有规律。而且二维流场streamline也不会显示流场方向。

    一种解决方法为随机在空间中散布一些点,然后以这些点为起点正向反向同时绘制流线。

    matlab中的streamline用法:

    load wind
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    hold on
    startx=73*ones(1,6);starty=20:5:45;%定义流线起点
    streamline(x2,y2,u2,v2,startx,starty)
    quiver(x2(1:3:end,1:3:end),y2(1:3:end,1:3:end),u2(1:3:end,1:3:end),v2(1:3:end,1:3:end),'color','r')
    hold off
    

    结果如下所示
    在这里插入图片描述
    双向随机绘图:

    load wind
    figure()
    N=30; %随机点的数量
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    maxx=max(x,[],'all');minx=min(x,[],'all');
    maxy=max(y,[],'all');miny=min(y,[],'all');%最大值最小值
    startx=rand(N,1)*(maxx-minx)+minx;
    starty=rand(N,1)*(maxy-miny)+miny;%生成随机点
    XY1 = stream2(x2,y2,u2,v2,startx,starty);%正向流线计算
    XY2 = stream2(x2,y2,-u2,-v2,startx,starty);%反向流线计算
    hold on
    for j=1:N
    	%绘制流线
        plot([flipud(XY2{j}(:,1));XY1{j}(:,1)],[flipud(XY2{j}(:,2));XY1{j}(:,2)],'-k')
    end
    quiver(x,y,u,v)
    hold off
    

    在这里插入图片描述
    如果流场可以用具体的流函数表示出来,则可以利用等值线的方式绘制:

    %等势面方法
    [x2,y2]=meshgrid(-5:0.1:5,-5:0.1:5);
    P=x2.^2-y2.^2;Q=2*x2.*y2;
    [u2,v2]=gradient(P);u2=-u2;v2=-v2;%势函数全部是负号
    max(abs(curl(x2,y2,u2,v2)),[],'all');
    figure
    hold on
    pcolor(x2,y2,P)%势函数
    shading interp
    quiver(x2(1:8:end,1:8:end),y2(1:8:end,1:8:end),u2(1:8:end,1:8:end),v2(1:8:end,1:8:end),'color','r')
    contour(x2,y2,Q,'LineColor','k','LineWidth',1.5,'LevelList',linspace(-50,50,20))
    caxis([-25,25])
    hold off
    

    在这里插入图片描述
    对于3维流场的流线图,推荐用streamslice绘制。
    https://ww2.mathworks.cn/help/matlab/ref/streamslice.html
    在这里插入图片描述
    streamslice的优点是可以很好的反应出方向和中断,这里就不做过多说明了。
    在这里插入图片描述

    对如何绘制流线或向量场感兴趣的,可以参见我的另一篇文章:
    利用matlab绘制二维均匀流线和向量场(向量场彩色箭头,颜色随变量变化)
    在这里插入图片描述

    2.4 带节点的流线图

    matlab中带节点的流线图函数为interpstreamspeed()。它在每条流线上添加了一定的节点,单根流线上的节点密集代表流速慢,节点稀疏代表流速快。
    这个函数直接看interpstreamspeed的帮助文档就行了,可视化效果不是很美观。
    在这里插入图片描述

    2.5流管图和流带图

    matlab中的流管图和流带图函数为streamtube和streamribbon,可以同时反映流场的方向、的、散度、旋度信息。

    下图为流管图示意图:

    load wind%[x,y,z,v]=flow();
    [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
    
    verts = stream3(x,y,z,u,v,w,sx,sy,sz);
    div = divergence(x,y,z,u,v,w);
    htubes=streamtube(verts,x,y,z,-div);%以上3行可以用streamtube(x,y,z,u,v,w,sx,sy,sz);代替
    
    set(htubes,'EdgeColor','none','AmbientStrength',.5)
    shading interp%彩色
    
    view(3);
    axis tight
    camlight 
    lighting gouraud
    

    绘制结果如下:
    在这里插入图片描述
    其中流管的粗细代表散度的变化,流管的方向代表流线的变化。

    流带图的绘制如下所示:

    figure()
    load wind
    [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
    verts = stream3(x,y,z,u,v,w,sx,sy,sz);
    cav = curl(x,y,z,u,v,w);%旋度
    spd = sqrt(u.^2 + v.^2 + w.^2).*.1;%速度
    streamribbon(verts,x,y,z,cav,spd);
    axis tight
    shading interp
    view(3);
    camlight; 
    lighting gouraud
    

    绘制结果如下:
    在这里插入图片描述
    除了方向和散度,流带的扭转还能表示旋度的变化。

    此外matlab官方还有一副很酷炫的流带图,我也摘了过来:
    在这里插入图片描述

    2.6 圆锥体图

    在三维向量场中以圆锥体形式绘制速度向量,由于其立体感比quiver3更好,所以更常用于三维流场。函数为coneplot。

    clear
    close all
    load wind
    xmin = min(x(:));
    xmax = max(x(:));
    ymin = min(y(:));
    ymax = max(y(:));
    zmin = min(z(:));%确定最大最小值
    xrange = linspace(xmin,xmax,8);
    yrange = linspace(ymin,ymax,8);
    zrange = 3:4:15;
    [cx,cy,cz] = meshgrid(xrange,yrange,zrange);绘制点的坐标位置
    
    figure
    hcone = coneplot(x,y,z,u,v,w,cx,cy,cz,5);
    hcone.FaceColor = 'red';
    hcone.EdgeColor = 'none';
    
    view(30,40)
    daspect([2,2,1])
    camlight right
    lighting gouraud
    hcone.DiffuseStrength = 0.8;
    

    效果如下:
    在这里插入图片描述

    2.7 粒子动画图

    streamparticles函数可以绘制流粒子,即定常流场的迹线动画。
    缺点是不能输出gif动图,不能显示非定常流场,如果想专门做这块的话建议自己编程。

    load wind
    figure
    daspect([1,1,1]); 
    view(2)
    [verts,averts] = streamslice(x,y,z,u,v,w,[],[],[5]); 
    sl = streamline([verts averts]);
    axis tight manual off;
    ax = gca;
    ax.Position = [0,0,1,1];
    %set(sl,'Visible','off')
    iverts = interpstreamspeed(x,y,z,u,v,w,verts,.05);
    zlim([4.9,5.1]);
    streamparticles(iverts, 200, 'Animate',15,'FrameRate',40, ...
        'MarkerSize',10,'MarkerFaceColor',[0 .5 0])
    

    输出粒子在某一时刻的截图如下:
    在这里插入图片描述

    2.8 Volume Viewer APP

    最近看到了一个App,在matlab菜单栏的App里面,叫做Volume Viewer。看起来很有意思,用一个小的GUI形式,提供了三维数据的查看方式。

    里面可以进行颜色映射、颜色透明度映射等修改。可以自定义切片。数据导入支持从已有的mat文件或者已有的变量导入。

    在这里插入图片描述
    在这里插入图片描述
    如果只是快速查看三维数据的话,这种拖拖拽拽点点点就能看的感觉还是挺方便的。

    3 参考链接

    https://ww2.mathworks.cn/help/matlab/volume-visualization.html
    或 搜索matlab的Volume Visualization文档

    展开全文
  • 转载:matlab流场可视化后处理

    千次阅读 2019-06-04 16:47:16
    matlab流场可视化后处理 1流体中标量的可视化 1.1 云图 1.2 切片图绘制 1.3 三维等值面图绘制 2流体中矢量的可视化 2.1 箭头图或速度图 2.2 流线图 2.4 带节点的流线图 2.5流管图和流带图 2.6 圆锥体图 2.7 粒子动画...

    原文链接:https://blog.csdn.net/weixin_42943114/article/details/88415270

    matlab流场可视化后处理
    1流体中标量的可视化
    1.1 云图
    1.2 切片图绘制
    1.3 三维等值面图绘制
    2流体中矢量的可视化
    2.1 箭头图或速度图
    2.2 流线图
    2.4 带节点的流线图
    2.5流管图和流带图
    2.6 圆锥体图
    2.7 粒子动画图
    3 参考链接
    1流体中标量的可视化
    流体力学中常见的标量为位置、速度绝对值、压强等。

    1.1 云图
    常用的云图绘制有pcolor、image、imagesc、imshow、contourf等函数。
    这里利用matlab自带的wind数据作为演示案例,显示二维云图的速度场。

    close all
    load wind
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    %速度云图
    figure()
    pcolor(x2,y2,sqrt(u2.^2+v2.^2))
    shading interp%插值绘制颜色
    1
    2
    3
    4
    5
    6
    7
    绘制结果如下:


    1.2 切片图绘制
    切片图常用于可视化复杂的三维流动。
    由于二维计算机屏幕和二维视网膜的限制,人类对垂直于眼球面的速度分量不是很敏感,所以绘制三维可视化的时候一定要注意光照、视角、明暗、反光等信息,辅助人去补全第三维度的信息。

    常用的切片显示函数有contourslice和slice,对应二维的contour和pcolor用法。
    下面以流场的涡量切片图为例,介绍切片图的用法。

    close all
    load wind
    %涡量切片图绘制
    %构建颜色图
    mycmp=[[ones(20,1),(0.05:0.05:1)',(0.05:0.05:1)'];[(1:-0.05:0.05)',(1:-0.05:0.05)',ones(20,1)]];
    cav = curl(x,y,z,u,v,w); %计算旋度
    h = slice(x,y,z,cav,[90 134],59,0); %切片
    shading interp
    daspect([1 1 1]); %坐标轴缩放
    axis tight
    colormap(mycmp);
    caxis([-5,5]) %确定颜色范围,使得颜色图中白色对应0涡量
    camlight %设置光照
    set([h(1),h(2)],'ambientstrength',.6); %调整局部亮度
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14


    1.3 三维等值面图绘制
    等值面相关的常用函数有:patch、isosurface、isocaps、isocolors、isonormals、reducevolume、subvolume等。
    下面以绘制三维速度等值面为例,介绍等值面的用法。

    close all
    clear
    load wind

    figure
    wind_speed = sqrt(u.^2 + v.^2 + w.^2);%速度
    %绘制等值面
    hiso = patch(isosurface(x,y,z,wind_speed,40));
    isonormals(x,y,z,wind_speed,hiso) %平滑
    hiso.FaceColor = 'red'; %等值面上色
    hiso.EdgeColor = 'none';
    %绘制断面
    hcap = patch(isocaps(x,y,z,wind_speed,40),...
       'FaceColor','interp', 'EdgeColor','none');
    colormap hsv
    %调整图片视角光源等
    axis tight 
    set(gca,'BoxStyle','full','Box','on')
    camproj perspective
    %camzoom(1.25)
    view(65,30)
    camlight(-45,45)
    hcap.AmbientStrength = 1;
    lighting gouraud
    daspect([1 1 1]);
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25


    2流体中矢量的可视化
    流体中常见的矢量有速度矢量、旋度矢量、梯度矢量等。

    2.1 箭头图或速度图
    matlab常用的速度图函数为quiver和quiver3。

    quiver为二维矢量图绘制,用法如下图所示。如果绘制箭头太密集,可以采用间隔采样的方式绘制。

    load wind
    figure()
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    Q=quiver(x2,y2,u2,v2);%详见帮助文档quiver
    Q.AutoScaleFactor=1.2;%更改箭头比例,详见帮助文档Quiver Properties
    1
    2
    3
    4
    5
    输出结果如下

    quiver3为3维矢量场的绘制。可视化效果不如coneplot函数的圆锥图。
    推荐搭配空间曲面的使用。参见quiver3帮助文档。https://ww2.mathworks.cn/help/matlab/ref/quiver3.html

    load wind
    quiver3(x([5 10],:,:),y([5 10],:,:),z([5 10],:,:),u([5 10],:,:),v([5 10],:,:),w([5 10],:,:))%quiver3
    1
    2


    2.2 流线图
    matlab中绘制流线常用的函数有:streamline、streamslice、stream2、stream3、interpstreamspeed。

    matlab中标准的流线图streamline需要知道流场的起始点,但通常对于复杂流场,起始点没有规律。而且二维流场streamline也不会显示流场方向。

    一种解决方法为随机在空间中散布一些点,然后以这些点为起点正向反向同时绘制流线。

    matlab中的streamline用法:

    load wind
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    hold on
    startx=73*ones(1,6);starty=20:5:45;%定义流线起点
    streamline(x2,y2,u2,v2,startx,starty)
    quiver(x2(1:3:end,1:3:end),y2(1:3:end,1:3:end),u2(1:3:end,1:3:end),v2(1:3:end,1:3:end),'color','r')
    hold off
    1
    2
    3
    4
    5
    6
    7
    结果如下所示

    双向随机绘图:

    load wind
    figure()
    N=30; %随机点的数量
    x2=x(:,:,5);y2=y(:,:,5);u2=u(:,:,5);v2=v(:,:,5);
    maxx=max(x,[],'all');minx=min(x,[],'all');
    maxy=max(y,[],'all');miny=min(y,[],'all');%最大值最小值
    startx=rand(N,1)*(maxx-minx)+minx;
    starty=rand(N,1)*(maxy-miny)+miny;%生成随机点
    XY1 = stream2(x2,y2,u2,v2,startx,starty);%正向流线计算
    XY2 = stream2(x2,y2,-u2,-v2,startx,starty);%反向流线计算
    hold on
    for j=1:N
        %绘制流线
        plot([flipud(XY2{j}(:,1));XY1{j}(:,1)],[flipud(XY2{j}(:,2));XY1{j}(:,2)],'-k')
    end
    quiver(x,y,u,v)
    hold off
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    如果流场可以用具体的流函数表示出来,则可以利用等值线的方式绘制:

    %等势面方法
    [x2,y2]=meshgrid(-5:0.1:5,-5:0.1:5);
    P=x2.^2-y2.^2;Q=2*x2.*y2;
    [u2,v2]=gradient(P);u2=-u2;v2=-v2;%势函数全部是负号
    max(abs(curl(x2,y2,u2,v2)),[],'all');
    figure
    hold on
    pcolor(x2,y2,P)%势函数
    shading interp
    quiver(x2(1:8:end,1:8:end),y2(1:8:end,1:8:end),u2(1:8:end,1:8:end),v2(1:8:end,1:8:end),'color','r')
    contour(x2,y2,Q,'LineColor','k','LineWidth',1.5,'LevelList',linspace(-50,50,20))
    caxis([-25,25])
    hold off
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    对于3维流场的流线图,推荐用streamslice绘制。
    https://ww2.mathworks.cn/help/matlab/ref/streamslice.html

    streamslice的优点是可以很好的反应出方向和中断,这里就不做过多说明了。


    2.4 带节点的流线图
    matlab中带节点的流线图函数为interpstreamspeed()。它在每条流线上添加了一定的节点,单根流线上的节点密集代表流速慢,节点稀疏代表流速快。
    这个函数直接看interpstreamspeed的帮助文档就行了,可视化效果不是很美观。


    2.5流管图和流带图
    matlab中的流管图和流带图函数为streamtube和streamribbon,可以同时反映流场的方向、的、散度、旋度信息。

    下图为流管图示意图:

    load wind%[x,y,z,v]=flow();
    [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);

    verts = stream3(x,y,z,u,v,w,sx,sy,sz);
    div = divergence(x,y,z,u,v,w);
    htubes=streamtube(verts,x,y,z,-div);%以上3行可以用streamtube(x,y,z,u,v,w,sx,sy,sz);代替

    set(htubes,'EdgeColor','none','AmbientStrength',.5)
    shading interp%彩色

    view(3);
    axis tight
    camlight 
    lighting gouraud
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    绘制结果如下:

    其中流管的粗细代表散度的变化,流管的方向代表流线的变化。

    流带图的绘制如下所示:

    figure()
    load wind
    [sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
    verts = stream3(x,y,z,u,v,w,sx,sy,sz);
    cav = curl(x,y,z,u,v,w);%旋度
    spd = sqrt(u.^2 + v.^2 + w.^2).*.1;%速度
    streamribbon(verts,x,y,z,cav,spd);
    axis tight
    shading interp
    view(3);
    camlight; 
    lighting gouraud
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    绘制结果如下:

    除了方向和散度,流带的扭转还能表示旋度的变化。

    此外matlab官方还有一副很酷炫的流带图,我也摘了过来:


    2.6 圆锥体图
    在三维向量场中以圆锥体形式绘制速度向量,由于其立体感比quiver3更好,所以更常用于三维流场。函数为coneplot。

    clear
    close all
    load wind
    xmin = min(x(:));
    xmax = max(x(:));
    ymin = min(y(:));
    ymax = max(y(:));
    zmin = min(z(:));%确定最大最小值
    xrange = linspace(xmin,xmax,8);
    yrange = linspace(ymin,ymax,8);
    zrange = 3:4:15;
    [cx,cy,cz] = meshgrid(xrange,yrange,zrange);绘制点的坐标位置

    figure
    hcone = coneplot(x,y,z,u,v,w,cx,cy,cz,5);
    hcone.FaceColor = 'red';
    hcone.EdgeColor = 'none';

    view(30,40)
    daspect([2,2,1])
    camlight right
    lighting gouraud
    hcone.DiffuseStrength = 0.8;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    效果如下:


    2.7 粒子动画图
    streamparticles函数可以绘制流粒子,即定常流场的迹线动画。
    缺点是不能输出gif动图,不能显示非定常流场,如果想专门做这块的话建议自己编程。

    load wind
    figure
    daspect([1,1,1]); 
    view(2)
    [verts,averts] = streamslice(x,y,z,u,v,w,[],[],[5]); 
    sl = streamline([verts averts]);
    axis tight manual off;
    ax = gca;
    ax.Position = [0,0,1,1];
    %set(sl,'Visible','off')
    iverts = interpstreamspeed(x,y,z,u,v,w,verts,.05);
    zlim([4.9,5.1]);
    streamparticles(iverts, 200, 'Animate',15,'FrameRate',40, ...
        'MarkerSize',10,'MarkerFaceColor',[0 .5 0])
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    输出粒子在某一时刻的截图如下:


    3 参考链接
    https://ww2.mathworks.cn/help/matlab/volume-visualization.html
    或 搜索matlab的Volume Visualization文档
    --------------------- 
    作者:hyhhyh21 
    来源:CSDN 
    原文:https://blog.csdn.net/weixin_42943114/article/details/88415270 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 基于 Matlab 分布式工具箱的流场计算及其可视化 蔡群;周美莲;段杰峰;李青...基于 MATLAB 和 CFD 数据库的流场可视化的实现 [J], 晏畅 5.基于 VB 与 MATLAB 混合编程的数据可视化与数据挖掘软件的研究 [J], 谢松; ...

    基于 Matlab 分布式工具箱的流场计算及其可视化 蔡群;周美莲;段杰峰;李青...

    基于 MATLAB 和 CFD 数据库的流场可视化的实现 [J], 晏畅 5.基于 VB 与 MATLAB 混合编程的数据可视化与数据挖掘软件的研究 [J], 谢松; 周卫; 李文林; 杨......

    基于 CCD 和 MATLAB 的刀具实际轮廓的检测 [J], 段振云; 吴霄 5.基于 MATLAB 的气象场等值线和流场的绘制方法 [J], 张玉民; 孔玉寿; 陈维 以上内容为文献......

    绘制图中ABC曲面上的压力体, (标方向) A A A B B B C C C 例2 绘制...把流体流动占据的空间称为:流场 流体力学的主要任务,就是:研究流场中的流动 ......

    三维圆柱图 2.2.18 light---光照处理 2.2.19 hidden---设置或取消隐藏线模式 2.3 流场图绘制 2.3.1 coneplot---流锥图 2.3.2 streamline---流线图......

    (虚压力体) ;.; 7 例1 绘制图中ABC曲面上的压力体, (标方向) A A A ...把流体流动占据的空间称为:流场 流体力学的主要任务,就是:研究流场中的流动 ......

    MATLAB 中的特殊图形函数功能类别 area bar barh ...条形图 水平条形图 彗星图 画区域图 误差条形图 ...计算流场的顶点 计算等值面的末端 计算等值面的颜色......

    (虚压力体) 7 例1 绘制图中ABC曲面上的压力体, (标方向) A A A B B ...把流体流动占据的空间称为:流场 流体力学的主要任务,就是:研究流场中的流动 ......

    我们利用Matlab软件进行了仿真实验, 并进行了对比实验分析.首先对基于多普勒图像信 息的二维平面流线绘制方法进行了仿真实验,其中 采用模拟涡流实验装置使流体(含滑石......

    用pie3函数分别绘制 地下水补给饼图及消耗饼图. 2 Delphi中调用Matlab绘图函数Manab虽然具有可视化设计工具GIlide,为用户 化的程序界面设计提供方便,用高级语言设计......

    绘制图中ABC曲面上的压力体, (标方向) A A A B B B C C C 例2 绘制...把流体流动占据的空间称为:流场 流体力学的主要任务,就是:研究流场中的流动 ......

    ⑤流场测量等场分布测量的范围小,不适于研 究大型...数据处理(曲线拟合、统计分析) 数据可视化(绘制图形)...结合化工应用的实例讲述– 如何使用MATLAB软件进行......

    采用 Matlab 编程设计求得,叶片设计的基本参数见表 1.从表 1 可知:风机的 ...图 2 为整机的流场区域和尺寸.流体旋转小区域前面距离风轮 为 8m,后面距离风......

    【中图分类】TP61+3.1 【相关文献】 1.基于 Matlab 语言的射流式冲击器冲击系统仿真计算 [J], 陈家旺; 殷琨; 谭凡 教 2.冲击器射流元件内部流场 CFD 模拟......

    m m Key words: P I algorithm; MATLAB; cross2correlation V [1] 0 前言 粒子图像测速技术 ( Particle I age Velocim etry, m 简称 P I )是在流场......

    (虚压力体) A 7 例1 绘制图中ABC曲面上的压力体, (标方向) A A A B ...把流体流动占据的空间称为:流场 流体力学的主要任务,就是:研究流场中的流动 ......

    2.基于 MATLAB 技术的 piv 软件设计 2.1 互相关理论为了得到流速分布的细节情况,散播在流场中的示踪粒子的粒径应该非常小、浓度应该足够大.使得 采集到的图像对......

    关键词:PIV算法;MATLAB;互相关 中图分类号:TP311 文献标识码:A 文章编号:100...特别 简称PIV)是在流场显示的基础上,利用图像学中模 式识别的相关算法,对获得......

    关于牛顿流体简单流场域的有限元求解的matlab程序代码...(9)矩形网格绘制程序 function rectangle_grid(JMP,...

    基于 MATLAB 的三维海浪模型数值仿真 齐宁;夏天;李...100071 【正文语种】中文 【中图分类】TP393 【...基于标准 k-ε 模型的汽车节气门三维流场数值仿真 [......

    展开全文
  • 利用matlab绘制流场中的流线

    千次阅读 2020-12-24 17:09:49
    利用matlab绘制流场中的流线,表示出驻点位置。 目录利用matlab绘制流场中的流线,表示出驻点位置。前提:已知流函数和势函数(空气动力学)三个案例分析感谢参考 前提:已知流函数和势函数(空气动力学) 代码如下...

    利用matlab绘制流场中的流线,表示出驻点位置。

    前提:已知流函数和势函数(空气动力学)

    代码如下

    // 流函数绘制
    clear all;
    %等势面方法
    [x2,y2]=meshgrid(-3:0.05:3,-3:0.05:3);
    %直匀流+点源
    %P=x2+log(x2.^2+y2.^2);Q=y2+atan(y2./x2);
    %圆柱无环量绕流
    %P=x2+x2./(x2.^2+y2.^2); Q=y2-y2./(x2.^2+y2.^2);
    %兰金卵形
    %势函数P
    P=0.5*log((x2-1).^2+y2.^2)-0.5*log((x2+1).^2+y2.^2)+1*x2;
    %流函数Q
    Q=atan(y2./(x2-1))-atan(y2./(x2+1))+1*y2;
    [u2,v2]=gradient(P);
    max(abs(curl(x2,y2,u2,v2)),[],'all');
    figure
    hold on
    pcolor(x2,y2,P)%势函数
    shading interp
    d = 8;dd = 10;%d用来调整箭头的间距,dd用来调整箭头长短
    quiver(x2(1:d:end,1:d:end),y2(1:d:end,1:d:end),u2(1:d:end,1:d:end)'./dd,v2(1:d:end,1:d:end)'./dd,'color','r')%画箭头
    contour(x2,y2,Q,'LineColor','k','LineWidth',0.8,'LevelList',linspace(-50,50,500))%调节线的稠密程度
    text(0,-1,'x','color','w','FontSize',10);
    text(0,1,'x','color','w','FontSize',10);%标注驻点位置
    %text(0.5,0,'x','color','w','FontSize',10);
    %text(-0.5,0,'x','color','w','FontSize',10);
    hold off
    
    
    // 流函数绘制
    clear all;
    %等势面方法
    [x2,y2]=meshgrid(-3:0.05:3,-3:0.05:3);
    %直匀流+点源
    %P=x2+log(x2.^2+y2.^2);Q=y2+atan(y2./x2);
    %圆柱无环量绕流
    %P=x2+x2./(x2.^2+y2.^2); Q=y2-y2./(x2.^2+y2.^2);
    %兰金卵形
    %势函数P
    P=0.5*log((x2-1).^2+y2.^2)-0.5*log((x2+1).^2+y2.^2)+1*x2;
    %流函数Q
    Q=atan(y2./(x2-1))-atan(y2./(x2+1))+1*y2;
    [u2,v2]=gradient(P);
    max(abs(curl(x2,y2,u2,v2)),[],'all');
    figure
    hold on
    pcolor(x2,y2,P)%势函数
    shading interp
    d = 8;dd = 10;%d用来调整箭头的间距,dd用来调整箭头长短
    quiver(x2(1:d:end,1:d:end),y2(1:d:end,1:d:end),u2(1:d:end,1:d:end)'./dd,v2(1:d:end,1:d:end)'./dd,'color','r')%画箭头
    contour(x2,y2,Q,'LineColor','k','LineWidth',0.8,'LevelList',linspace(-50,50,500))%调节线的稠密程度
    text(0,-1,'x','color','w','FontSize',10);
    text(0,1,'x','color','w','FontSize',10);%标注驻点位置
    %text(0.5,0,'x','color','w','FontSize',10);
    %text(-0.5,0,'x','color','w','FontSize',10);
    hold off
    

    三个案例分析

    均为水平来流从左到右VV_{∞} ,左汇-Q(-a,0),右源Q(a,0)
    - case 1

    驻点在y轴上,Q/π\pia>VV_{∞}

    - case 2
    在这里插入图片描述
    驻点在(0,0)Q/π\pia=VV_{∞}

    - case 3
    在这里插入图片描述

    驻点在x轴,Q/π\pia<VV_{∞}

    感谢参考

    1、matlab网站
    2、csdn流场可视化

    展开全文
  • Fast Euler and Navier-Stokes fluid flow simulation Here are two examples of videos: ... Once the computation is done, enter: film = graph_flow_euler to make a Matlab movie.
  • MATLAB作为世界上最流行的仿真计算软件之一,已经成为工科学生必学、科研和工程技术人员必会的软件。本书详细介绍了MATLAB中的图形可视化、科学计算、系统分析方法、系统控制技术、图像处理技术的各种使用命令和编程...
  • 基于MATLAB和CFD数据库的流场可视化的实现.pdf
  • 基于Matlab GUI的密集烤房流场分析及反演系统的设计与实现.pdf
  • 基于MATLAB的带自由表面粘性流场数值模拟.pdf
  • MATLAB函数vtkwrite使用方法 这里解释一下原博主给出的一个例子 前6个参数是必须要给的 分别是写出的文件名,数据类型,x坐标,y坐标,z坐标 注意这里的X Y Z必须都是三维的数据。即X为354115的张量,Y也是354115的...
  • 基于MATLAB的电冰箱风冷式蒸发器流场的图像处理.pdf
  • 利用matlab实现POD分解(在一维信号或二维流场矢量中的应用)0 前言0.1 matlab中特征值计算0.2 matlab中SVD分解计算1 一维信号POD分解1.1 原始的POD分解1.2 快照POD分解(Snapshot-POD)1.3 基于SVD的POD分解1.4 关于...
  • 基于笛卡尔网格的三维流动数值模拟,其流场信息可以通过tecplot格式进行输出,方便tecplot对流场进行可视化处理,但对数据进行在加工时,还是导入matlab中比较方便,那么对于一个tecplot数据文件,matlab是不能直接...
  • 借助MATLAB软件,采用标准κ-ε模型,基于同位网格的SIMPLEC方法,对切向入口旋风分离器内的气相流场进行了数值模拟研究。直接调用其内置函数,对旋风分离器进行网格划分,生成插值计算、三对角追赶法以及交替方向...
  • 利用matlab绘制二维均匀流线和向量场

    千次阅读 多人点赞 2020-04-01 13:26:56
    之前一篇文章matlab流场可视化后处理我简单介绍了很多绘制流场可视化的方法,但是在流线方面一直不是很满意,因为matlab自带的绘制流线函数streamslice没有开源,有些参数(比如每根流线的颜色)不能修改等,所以我...
  • 基本上通过paraview可以很方便的保存整个时间段的模拟输出,格式为csv,然后通过matlab遍历读取csv,存入矩阵,再reshape即可得到流场的矩形数据。 如果是二维的,直接contourf则可以查看。如果是3D的数据,需要通过...
  • title('6月份东海盐度分布图') %% 画流场图 lat = ncread('文件名.nc','lat'); lon = ncread('文件名.nc','lon'); [Lat,Lon]=meshgrid(lat,lon); %读取u,v数据 u = ncread('文件名.nc','water_u'); v = ncread('...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382
精华内容 152
关键字:

matlab流场

matlab 订阅