matlab使用教程(92)—流线图、流带图和流管图

news2024/11/24 6:32:46

1.使用向量数据显示流线图

MATLAB® 向量数据集 wind 代表北美地区的气流。本示例结合使用了几种方法:

  • 利用流线跟踪风速

  • 利用切片平面显示数据的横截面视图

  • 利用切片平面上的等高线提高切片平面着色的可见性

1.1确定坐标的范围

加载数据并确定用来定位切片平面和等高线图的最小值和最大值(load、min、max)。

load wind
xmin = min(x(:));
xmax = max(x(:));
ymax = max(y(:));
zmin = min(z(:));

1.2 添加切片平面以提供视觉环境

计算向量场的模(代表风速),以生成用于 slice 命令的标量数据。沿 x 轴在 xmin100 和 xmax 处、沿 y 轴在 ymax 处以及沿 z 轴在 zmin 处创建切片平面。指定插补面着色,以切片颜色指示风速,但不绘制边(sqrt、slice、FaceColor、EdgeColor)。

wind_speed = sqrt(u.^2 + v.^2 + w.^2);
hsurfaces = slice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin);
set(hsurfaces,'FaceColor','interp','EdgeColor','none')
colormap turbo

1.3 在切片平面上添加等高线

在切片平面上绘制浅灰色等高线以帮助量化颜色映射(contourslice、EdgeColor、LineWidth)。

hcont = ...
contourslice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin);
set(hcont,'EdgeColor',[0.7 0.7 0.7],'LineWidth',0.5)

1.4 定义流线的起点

在本示例中,所有流线都从 x 轴上的值 80 处开始,在 y 方向上的范围为 20 到 50,在 z 方向上的范围为 0 到 15。保存流线的句柄并设置线宽和颜色(meshgrid、streamline、LineWidth、Color)。

[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
hlines = streamline(x,y,z,u,v,w,sx,sy,sz);
set(hlines,'LineWidth',2,'Color','r')

1.5 定义视图

设置视图,扩展 z 轴以便于观察图形(view、daspect、axis)。

view(3)
daspect([2,2,1])
axis tight

2.利用流带显示旋度

2.1流带可以显示哪些信息

与流线类似,流带可以表明流的方向,但通过扭曲带状流线,流带还可以显示围绕流坐标轴的旋转。streamribbon 函数允许您为流带中的每个顶点指定扭曲角度(以弧度为单位)。

与 curl 函数结合使用时,streamribbon 可用于显示向量场的旋度角速度。下例演示了这一技术。

2.2选择要绘制的数据子集

加载 wind 数据集并使用 subvolume 选择关注区域。先绘制完整数据集可以帮助您选择关注区域。

load wind
lims = [100.64 116.67 17.25 28.75 -0.02 6.86];
[x,y,z,u,v,w] = subvolume(x,y,z,u,v,w,lims);

2.3计算旋度角速度和风速

计算旋度角速度和风速。

cav = curl(x,y,z,u,v,w);
wind_speed = sqrt(u.^2 + v.^2 + w.^2);

2.4创建流带

  • 使用 meshgrid 为流带创建起点数组。有关指定起点数组的信息,请参阅指定流线图的起点。

  • stream3 以 .5 为步长计算流线顶点。

  • streamribbon 按因子 2 缩放流带宽度,以提高扭曲(表明旋度角速度)的可见性。

  • streamribbon 返回它创建的曲面对象的句柄,然后使用它们将曲面颜色设置为红色 (FaceColor)、将曲面边的颜色设置为浅灰色 (EdgeColor),并稍微提高应用光照后反射的环境光的亮度 (AmbientStrength)。

    [sx sy sz] = meshgrid(110,20:5:30,1:5);
    verts = stream3(x,y,z,u,v,w,sx,sy,sz,.5);
    h = streamribbon(verts,x,y,z,cav,wind_speed,2);
    set(h,'FaceColor','r',...
       'EdgeColor',[.7 .7 .7],...
       'AmbientStrength',.6)

2.5定义视图并添加光照

  • volumebounds 命令为设置 axis 和颜色范围提供了便捷的途径。

  • 添加 grid 并将 view 设置为三维(streamribbon 不会更改当前视图)。

  • camlight 在视点右侧创建光源,lighting 将光照方法设置为 Gouraud。

    axis(volumebounds(x,y,z,wind_speed))
    grid on
    view(3)
    camlight right; 

3.利用流管显示散度

3.1流管可以显示哪些信息

流管类似于流线,只不过流管具有宽度,为表示信息提供了另外一个维度。

默认情况下,MATLAB® 图形通过流管的宽度显示向量场的散度。您还可以为每个流管顶点定义宽度,从而将其他数据映射到宽度。

本示例使用以下方法:

  • 利用流管指示 wind 数据集中向量场的流向和散度

  • 利用着色的切片平面指示叠加的风流的速度,并利用等高线提高可见性

输入项包括三维体坐标、向量场分量以及流管的起点位置。

3.2加载数据并计算所需的值

加载数据并计算绘图所需的值。这些值包括:

  • 切片平面的位置(最大 x 值、最小 y 值和海拔值)

  • 流管起点的最小 x 值

  • 风速(向量场的模)

    load wind
    xmin = min(x(:));
    xmax = max(x(:));
    ymin = min(y(:));
    alt = 7.356; % z value for slice and streamtube plane
    wind_speed = sqrt(u.^2 + v.^2 + w.^2);

3.3绘制切片平面

绘制切片平面 (slice) 并设置 surface 属性以创建平滑着色的切片。使用 hsv colormap 中的 16 种颜色。

hslice = slice(x,y,z,wind_speed,xmax,ymin,alt);
set(hslice,'FaceColor','interp','EdgeColor','none')
colormap hsv(16)

3.4在切片平面上添加等高线

在切片平面上添加等高线 (contourslice)。调整等高线间隔,使线条与切片平面上的颜色边界匹配:

  • 调用 clim 以获取当前颜色范围。

    在 R2022a 之前: 使用 caxis,它具有与 clim 相同的语法和参量。

  • 将 contourslice 使用的插值方法设置为 linear,以便与 slice 使用的默认值匹配。

    color_lim = clim;
    cont_intervals = linspace(color_lim(1),color_lim(2),17);
    hcont = contourslice(x,y,z,wind_speed,xmax,ymin,...
       alt,cont_intervals,'linear');
    set(hcont,'EdgeColor',[.4 .4 .4],'LineWidth',1)

3.5创建流管

使用 meshgrid 创建流管起点数组,起点从最小 x 值开始,在 y 方向上的范围为 20 到 50,并位于 z 方向上的单个平面中(对应于其中一个切片平面)。

流管 (streamtube) 绘制在指定的位置,并放大为默认宽度的 1.25 倍,以突出散度(宽度)的变化。向量 [1.25 30] 中的第二个元素指定流管周长上的点数(默认值为 20)。随着流管大小的增加,您可能需要增加此值的大小,以保持光滑的流管外观。

在调用 streamtube 之前设置数据纵横比 (daspect)。

流管是曲面对象,因此您可以通过设置曲面属性来控制其外观。本示例通过设置曲面属性获得明亮的红色曲面。

[sx,sy,sz] = meshgrid(xmin,20:3:50,alt);
daspect([1,1,1]) % set DAR before calling streamtube
htubes = streamtube(x,y,z,u,v,w,sx,sy,sz,[1.25 30]);
set(htubes,'EdgeColor','none','FaceColor','r',...
   'AmbientStrength',.5)

3.6定义视图

定义视图并添加光照(view、axis volumebounds、Projection、camlight)。

view(-100,30)
axis(volumebounds(x,y,z,wind_speed))
set(gca,'Projection','perspective')
camlight left

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【WEEK15】 【DAY3】Scheduled Tasks【English Version】

2024.6.5 Wednesday Following 【WEEK15】 【DAY2】【DAY3】Email Tasks【English Version】 Contents 17. Asynchronous, Scheduled, and Email Tasks17.3. Scheduled Tasks17.3.1. Two Annotations:17.3.2. Cron Expression17.3.3. Modify Springboot09TestApplication.java …

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…

工作备忘录软件有哪些 记事备忘提醒三合一的备忘录

在工作中,我总是觉得自己脑子好像不够用,一会儿是这个项目的进度要跟踪,一会儿是那个会议的要点要记录。每天都在忙碌与混乱中度过,我甚至开始怀疑自己是否适合这份工作。 备忘录不仅是一个简单的记事工具,像敬业签这…

【数据分享】中国高技术产业统计年鉴(2023年)

大家好!今天我要向大家介绍一份重要的高技术产业发展情况统计数据资源——《中国高技术产业统计年鉴》。这份年鉴涵盖了从2023年中国高技术产业发展情况的全面数据,并以多格式提供免费下载。(无需分享朋友圈即可获取) 数据介绍 …

Java利用Scanner实现控制台文字游戏,Java实现猜数字游戏简易文字游戏,Java实现石头剪刀布简易文字游戏

1、猜数字游戏简易文字游戏 public static void main(String[] args) {//文本扫描器Scanner scanner new Scanner(System.in);//获取本次游戏的正确数字int num new Random().nextInt(100);System.out.println("开始猜数字游戏,输入数字后按enter");whi…

DLL文件修复dffsetup3.3.90,带Keygen

之前分享过DirectX与4DDiGDLLFixer,今天再分享一款,名字叫DLLfiles Fixer,中文版带key你懂的,对于玩游戏人来说,经常因为少了某个dll文件无法运行,DLL-files Fixer能够非常方便的修复。 软件功能 可以消除…

提升学校管理效率,智慧校园解决方案来袭

你是不是曾为学校管理效率低下而困扰?是不是对传统的教育模式感到力不从心?现在,一个划时代的解决方案来啦——智慧校园! 随着科技的不断发展,智慧校园正逐渐改变着学校的管理方式。通过将信息技术与教育相结合&#x…

【Java数据结构】详解LinkedList与链表(一)

🔒文章目录: 1.❤️❤️前言~🥳🎉🎉🎉 2.ArrayList的缺陷 3.链表的概念及结构 4.无头单向非循环链表的实现 4.1成员属性 4.2成员方法 createList display——打印链表 addFirst——头插 addLast…

70 Realistic Mountain Environment Textures Cliff(70+张真实的山地环境纹理)

大量适合山区和其他岩石环境的纹理--悬崖、岩石、砾石等等 每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。 70种质地 70种材料 70个地…

000002 - Hadoop环境安装

Hadoop及其大数据生态圈 1. 背景2. 实践2.1 Linux服务器准备2.2 在其中一台服务器上安装JDK2.3 在其中一台服务器上安装HADOOP2.4 本地模式运行一个hadoop案例 3. 自动化部署 1. 背景 要搭建Hadoop集群环境,我们需要执行如下 准备三台Linux服务器,服务…

【Linux驱动】【手把手配置3568寄存器】点亮RK3568的一颗LED

【硬件】 3568的LED9 :引脚 GPIO0 B7 【配置GPIO的复用】 找配置复用关系的寄存器基地址、偏移地址、对应配置的GPIO。 查找:io -r -4 0xfdc2000c 系统设置的默认值 结果为1,意思是只有bit 0是1,其他全都为0。所以系统默认就是…

【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较

【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较 一、引言二、非关系型数据库(NoSQL)2.1 优势 三、关系型数据库(RDBMS)3.1 优势 四、结论 💖The Begin…

论文合集整理推荐2024.6.4

论文合集整理推荐2024.6.4 原创 小王搬运工 时序课堂 2024-06-04 20:12 四川 ‍2012年论文合集:论文入口 ‍2019年论文合集:论文入口 2021年论文合集:论文入口 2022年论文合集:论文入口 2023年论文合集:论文入口…

数据结构---力扣 20.有效的括号 (C语言

1.链接: . - 力扣(LeetCode)【点击即可跳转】 思路: 使用 栈 来完成操作 1.左括号-- 入栈 2.右括号-- 判断出栈顶的左括号与右括号是否匹配 如果匹配-->继续 不匹配-->终止 代码中 栈 的基本实现,不在以下展示&…

两站图片滑动对比效果实现(VUE3)

像这种图片滑动对比的效果,网上还不少见吧,但是网上却不好找到完整现成的实现代码,我找到几个地方有类似的代码,但是都不好直接移植到代码里,因为很多都是使用原生htmlcssjs实现,太复杂了。反而不好应用到v…

【Python Cookbook】S02E04 文本模式的匹配和查找 match()、search()、findall() 以及 捕获组和 + 的含义

目录 问题解决方案讨论 问题 本文讨论一些按照特定的文本模式进行的查找和匹配。 解决方案 如果想要匹配的只是简单文字,通常我们使用一些内置的基本字符串方法即可,如:str.find(),str.startwith(),str.endswith() …

MySQL数据库数据恢复方案应对没有where误操作导致的大量数据更新或删除

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

二分答案-acwing-102. 最佳牛围栏

题目传送门:t​​​102. 最佳牛围栏 - AcWing题库高质量的算法题库https://www.acwing.com/problem/content/104/ 解题思路 整体解析 按照题目要求我们要找到一块连续的区域,使其里面每块地里面的平均值最大,且这块区域的长度要大于f 二分处理…

STM32——ADC篇(ADC的使用)

一、ADC的介绍 1.1什么是ADC ADC(Analogto-Digital Converter)模拟数字转换器,是将模拟信号转换成数字信号的一种外设。比如某一个电阻两端的是一个模拟信号,单片机无法直接采集,此时需要ADC先将短租两端的电…

免费获取云服务器

这几天刚入手了阿贝云的 “免费云服务器 ” ,接下来给大家讲讲如何免费注册阿贝云的免费云服务器 如何获取免费云服务器 打开阿贝云官网,注册并认证 即可以领取免费云服务器 阿贝云地址:https://www.abeiyun.com/ 服务器优势 永久免费&…