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

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.mzph.cn/web/23772.shtml

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

相关文章

SpringBoot发邮件服务如何配置?怎么使用?

SpringBoot发邮件需要的参数?邮件发送性能如何优化? 在SpringBoot项目中配置发邮件服务是一个常见的需求,它允许我们通过应用程序发送通知、验证邮件或其他类型的邮件。AokSend将详细介绍如何在SpringBoot中配置发邮件服务。 SpringBoot发邮…

qmt量化交易策略小白学习笔记第17期【qmt编程之获取对应周期的北向南向数据--方式1:内置python】

qmt编程之获取对应周期的北向南向数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 获取…

小程序开发平台版源码系统——社区论坛小程序功能 带完整的安装代码包以及搭建教程

系统概述 这款社区论坛小程序源码系统是一款功能强大、易于使用的开发平台版源码系统。它采用先进的技术架构,结合了丰富的功能模块,能够满足不同用户的需求。该系统具有高度的可扩展性和灵活性,能够根据用户的需求进行定制化开发&#xff0…

【ffmpeg】本地格式转换 mp4转wav||裁剪mp4

个人感受:太爽了!!!(可能用惯了转换网站和无良的转换软件) ———— 使用FFmpeg把mp4文件转换为WAV文件 - 简书 (jianshu.com) FFMPEG 视频分割和合并 - 简书 (jianshu.com) ———— 示例 ffmpeg -i …

Qwen2开源发布!0.5B到72B,显著提升!

Qwen2是一个开源的自然语言处理模型,它从0.5B到72B参数规模的显著提升,代表着自然语言处理技术的重大进步。Qwen2的发布,意味着我们可以期待模型在各项自然语言处理任务上,如文本生成、文本分类、机器翻译等,都会有更加…

Qt 窗口居中显示

Qt 窗口居中显示 引言一、窗体的setGeometry函数二、计算屏幕中心然后move三、借助QRect计算四、补充知识点 引言 窗口居中可以提供良好的视觉效果、突出重点内容、提升用户导航和操作的便利性,有助于改善用户体验。 Qt一般情况下,其Mainwindow或弹出的…

咖啡机器人如何精准控制液位流量

在如今快节奏的生活中,精确控制液位流量的需求愈发迫切,特别是在咖啡机器人等精密设备中。为了满足这一需求,工程师们不断研发出各种先进的技术,以确保液体流量的精准控制。其中,霍尔式流量计和光电式流量计就是两种常…

【Spring Cloud】Gateway 服务网关核心架构的执行流程和断言

文章目录 基本概念执行流程断言内置路由断言工厂自定义路由断言工厂 总结 基本概念 路由(Route)是gateway中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息: id:路由标识符,区别于其他Route。uri&…

论文合集整理推荐2024.6.4

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

carbondata入库数据查询异常排查

1,背景:carbondata的入库segments对应的状态都是success,但是查询的时候报错, 2,排查内容 1,segments的状态 success 2,任务执行记录日志 正常 3,找到对应查询的天,指定对…

【JavaEE精炼宝库】多线程(4)深度理解死锁、内存可见性、volatile关键字、wait、notify

目录 一、死锁 1.1 出现死锁的常见场景: 1.2 产生死锁的后果: 1.3 如何避免死锁: 二、内存可见性 2.1 由内存可见性产生的经典案例: 2.2 volatile 关键字: 2.2.1 volatile 用法: 2.2.2 volatile 不…

使用 Scapy 库编写 ICMP 时间戳攻击脚本

一、介绍 ICMP时间戳攻击(ICMP Timestamp Attack)是一种利用ICMP协议中的Timestamp请求和响应消息来实施的攻击。攻击者发送大量的ICMP Timestamp请求消息到目标主机,以触发目标主机对每个请求进行响应,从而消耗目标系统的网络资…

【Linux】(一)——Linux基础和Linux命令基础语法

目录 Linux基础Linux发行版本Linux终端Linux命令 Linux基础 Linux,通常指的是GNU/Linux操作系统,这是一个开源且免费使用的类UNIX操作系统。它的核心组件——Linux内核,由林纳斯托瓦兹(Linus Torvalds)在1991年10月5日…

Arthas使用教程——JVM常用命令

JVM相关命令 dashboard——当前系统的实时数据面板 显示当前 tomcat 的实时信息。 使用方式:dashboard 数据说明 ID: Java 级别的线程 ID,注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。 NAME: 线程名 GROUP: 线程组名 PRIORITY: 线程优先级…

Rocky Linux安装与基础配置

目录 背景与起源 主要特点 目标用户 发展前景 下载 安装 常用配置命令: 更换镜像源 Rocky Linux 是一个开源的、由社区驱动的操作系统,旨在使用 Red Hat Enterprise Linux(RHEL)源码构建的下游二进制兼容发行版。以下是关于…

优思学院|一文看懂新版FMEA与FMEA的七大步骤

FMEA的起源 FMEA最早起源于20世纪40年代的美国军工行业。当时,美国军方为了提高武器系统的可靠性和安全性,开始使用FMEA来识别和评估潜在的故障模式及其影响。1949年,美国军方发布了《军用程序手册》(Military Procedures Handbo…

【Python报错】已解决AttributeError: ‘method‘ object has no attribute ‘xxx‘

解决Python报错:AttributeError: ‘method’ object has no attribute ‘xxx’ 在Python中,AttributeError通常表明你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: method object has no attribute xxx的错误,这通常意…

奇迹MU最强法师介绍

1、黑龙波 释放出深渊中的黑龙之魂,对一定范围内的目标造成中等程度伤害。 奥义: 怒哮——法师释放出深渊龙魂的怨怒之力,在电闪雷鸣中中咆哮的龙魂将对敌人额外造成少量伤害。 魂阵——法师利用法阵控制黑龙之魂进行更大范围的攻击&…

如何使用SeaFile文件共享服务器结合内网穿透将家中电脑变成个人云盘

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 本文主要为大家介绍,如何使用两个…

【Oracle篇】rman全库异机恢复:从RAC环境到单机测试环境的转移(第四篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…