当前位置: 首页 > news >正文

Day23_0.1基础学习MATLAB学习小技巧总结(23)——句柄图形

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。

参考书目:《MATLAB基础教程 (第三版) (薛山)》

之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。

在本章中的代码,会以资源的形式发在我的博客里供大家免费下载学习。

句柄图形---图形对象

句柄图形(HandleGraphics)是MATLAB中用于创建图形的面向对象系统。图形句柄提供多种绘图命令,如绘制线条、文本、网格和多边形,以及构建图形用户界面(GUI)。

通过图形句柄,MATLAB能够操作图形元素,这些元素是生成各种图形的基础。利用图形句柄,可以在MATLAB中调整图形显示效果和创建绘图函数等。

图形对象是MATLAB中显示数据的基本绘图元素,每个对象都有一个唯一的标识符,即句柄。通过句柄,可以操作现有的图形对象并控制其属性。

MATLAB中这些对象的组织形式为层次结构,如图所示

MATLAB中的图形对象主要分为核心图形对象和复合图形对象两种类型。核心图形对象用于创建绘图元素,可以通过高级绘图函数和复合图形对象进行调用。复合图形对象由核心对象构成,为用户提供更便捷的接口。复合图形对象是多个子类的基础,如Plot对象、Annotation对象、Group对象和GUI(图形用户界面)对象等。这些图形对象相互关联、相互依赖,共同构成MATLAB的图形系统。

下面将介绍这些图形对象。

1 Root对象

Root对象是根对象,位于MATLAB层次结构的最顶层。在MATLAB中创建图形对象时,只能生成一个唯一的Root对象,所有其他对象均属于该对象。根对象在启动MATLAB时由系统自动创建,用户可以设置其属性,以改变图形的显示效果。

2 Figure对象

Figure是MATLAB中用于显示图形的窗口,包含菜单栏、工具栏、图形用户界面对象、右键菜单、坐标系及其子对象等。MATLAB允许用户同时创建多个图形窗口。

如果尚未创建图形对象(即Figure窗口),调用任意绘图函数或图像显示函数(如plot和imshow等)将自动生成一个图形窗口。如果根对象已包含一个或多个图形窗口,则总有一个窗口被设为“当前”窗口,作为所有当前绘图函数的输出窗口。

Figure对象常用属性和属性值如下表所示:

3 Core对象 

Core对象包含基本的绘图单元,如线条、文本、多边形及一些特殊对象。例如,表面图中包括矩形方格、图像和光照对象,后者虽然不可视,但会影响某些对象的色彩方案。

MATLAB中的核心对象(Core对象)如下表所示:

 例:创建核心图形对象:

[x,y] = meshgrid([-2:.4:2]);
Z = x.*exp(-x.^2-y.^2);
fh = figure('Position',[350 450 520 740],'Color','b');
ah = axes('Color',[.8 .8 .8],'XTick',[-2 -1 0 1 2],...'YTick',[-2 -1 0 1 2]);
sh = surface('XData',x,'YData',y,'ZData',Z,...'FaceColor',get(ah,'Color')+.1,...'EdgeColor','k','Marker','o',...'MarkerFaceColor',[.5 1 .85]);

更改一下视角:

view(3)

 

4 Plot对象

MATLAB的一些高级绘图函数可以创建Plot对象。通过Plot对象的属性,用户可以快速访问其包含的核心(Core)对象的重要属性。

Plot对象的上级对象可以是坐标系(Axes)对象或组(Group)对象。

在MATLAB中,能够生成Plot对象的函数及其功能,如下表所示:

 创建Plot对象:

[x,y,z] = peaks;
[c,h] = contour(x,y,z);

对线型和线宽进行设置:

set(h,'LineWidth',3,'LineStyle',':')

 5 Annotation对象

Annotation对象是MATLAB中的注释内容,存在于坐标系中,该坐标系的范围覆盖整个图形窗口。用户可以通过规范化坐标将注释对象放置于图形窗口中的任何位置。规范化坐标的范围为0到1,其中窗口的左下角为[0,0],右上角为[1,1]。

例:通过注释矩形区域包含子图:

x = -2*pi:pi/12:2*pi;
y = x.^2;
subplot(2,2,1:2)
plot(x,y)
h1 = subplot(223);
y = x.^4;
plot(x,y)
h2 = subplot(224);
y = x.^5;
plot(x,y)

 接下来确定注释矩形区域的位置及大小

p1 = get(h1,'Position');
t1 = get(h1,'TightInset');
p2 = get(h2,'Position');
t2 = get(h2,'TightInset');
x1 = p1(1)-t1(1);y1 = p1(2)-t1(2);
x2 = p2(1)-t2(1);y2 = p2(2)-t2(2);
w = x2-x1+t1(1)+p2(3)+t2(3);h = p2(4)+t2(2)+t2(4);

 创建注释矩形区域,包含第3个和第4个子图,将该区域的颜色设置成半透明的红色,边界为实边界。

annotation('rectangle',[x1,y1,w,h], ...'FaceAlpha',.2','FaceColor','red','EdgeColor','red');

 

6 Group对象 

Group对象允许用户将多个坐标系子对象作为一个整体进行操作,例如,可以设置整个组的可视性,或通过改变组对象的属性重新设置其中所有对象的位置等。MATLAB中有两种类型的组:

1. hggroup:用于创建一组对象,并希望通过对该组中的任何一个对象进行操作来控制整个组的可视性或选中状态。hggroup通过hggroup函数创建。

2. hgtransform:用于对一组对象进行变换,包括选中、平移、尺寸变化等。

hggroup组和hgtransform组之间的主要区别在于,hgtransform可以通过变换矩阵对其中的所有子对象进行操作。
 

相关文章:

Day23_0.1基础学习MATLAB学习小技巧总结(23)——句柄图形

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目:《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是…...

同步io和异步io

同步 I/O 和异步 I/O 是处理输入输出操作的两种不同策略,它们各有优缺点,适用于不同的场景。下面是它们的主要区别: 同步 I/O 定义:在同步 I/O 模型中,发起 I/O 操作的线程会被阻塞,直到操作完成。换句话说…...

AI基础 L19 Quantifying Uncertainty and Reasoning with Probabilities I 量化不确定性和概率推理

Acting Under Uncertainty 1 Reasoning Under Uncertainty • Real world problems contain uncertainties due to: — partial observability, — nondeterminism, or — adversaries. • Example of dental diagnosis using propositional logic T oothache ⇒ C av ity • H…...

C++ 关于时间的轮子

时间字符串转chrono::system_clock std::chrono::system_clock::time_point parse_date(const std::string& date_str) {std::tm tm {};std::istringstream ss(date_str);ss >> std::get_time(&tm, "%Y-%m-%d"); // 假设日期字符串格式为YYYY-MM-DDr…...

阿里达摩院:FunASR - onnxruntime 部署

阿里达摩院:FunASR - onnxruntime 部署 git clone https://github.com/alibaba/FunASR.git 切换到 onnxruntime cd FunASR/runtime/onnxruntime1下载 onnxruntime wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/dep_libs/onnxruntime-linux-x64-1.14.0.t…...

SpringMvc注解

SpringMvc注解 1 SpringMcv基础环境搭建 注&#xff1a;如果已经有SpringMvc项目直接跳过这个就可以了 1 新建项目 2.修改文件为packaging 为war包 <packaging>war</packaging> <?xml version"1.0" encoding"UTF-8"?> <pr…...

队列的基本概念及顺序实现

队列的基本概念 队列的定义 ​ 队列(Queue)简称队&#xff0c;也是一宗操作受限的线性表&#xff0c;只允许在表的一段进行插入&#xff0c;而在表的另一端进行删除。向队列中插入元素成为入队或进队&#xff1b;删除元素成为出队或离队。 ​ 特性&#xff1a;先进先出 (Fir…...

Leetcode 最长连续序列

算法流程&#xff1a; 哈希集合去重&#xff1a; 通过将数组中的所有元素放入 unordered_set&#xff0c;自动去除重复元素。集合的查找操作是 O(1)&#xff0c;这为后续的快速查找提供了保证。 遍历数组&#xff1a; 遍历数组中的每一个元素。对于每个元素&#xff0c;首先检…...

linux网络编程——UDP编程

写在前边 本文是B站up主韦东山的4_8-3.UDP编程示例_哔哩哔哩_bilibili视频的笔记&#xff0c;其中有些部分博主也没有理解&#xff0c;希望各位辩证的看。 UDP协议简介 UDP 是一个简单的面向数据报的运输层协议&#xff0c;在网络中用于处理数据包&#xff0c;是一种无连接的…...

第四部分:1---文件内核对象,文件描述符,输出重定向

目录 struct file内核对象&#xff1a; 如何读写文件&#xff1f; 文件描述符在文件描述符表中的分配规则&#xff1a; 输出重定向初步解析&#xff1a; dup2实现复制文件描述符&#xff1a; struct file内核对象&#xff1a; struct file 是在内核空间中创建的用于描述文…...

如何在开发与生产环境中应用 Flask 进行数据库管理:以 SQLAlchemy 和 Flask-Migrate 为例

在使用 Flask 进行开发时&#xff0c;数据库管理是一个至关重要的环节。借助 SQLAlchemy 作为 ORM&#xff08;对象关系映射&#xff09;工具和 Flask-Migrate 进行数据库迁移&#xff0c;开发者可以高效地进行数据库管理&#xff0c;并在不同的环境&#xff08;如开发环境和生…...

【Java零基础】Java核心知识点之:Map

HashMap(数组链表红黑树) HashMap 根据键的 hashCode 值存储数据&#xff0c;大多数情况下可以直接定位到它的值&#xff0c;因而具有很快的访问速度&#xff0c;但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null&#xff0c;允许多条记录的值为 null。HashMa…...

9.12日常记录

1.extern关键字 1&#xff09;诞生动机:在一个C语言项目中&#xff0c;需要再多个文件中使用同一全局变量或是函数&#xff0c;那么就需要在这些文件中再声明一遍 2&#xff09;用于声明在其他地方定义的一个变量或是函数&#xff0c;在当前位置只是声明&#xff0c;告诉编译器…...

光纤的两种模式

光纤主要分为两种模式&#xff1a;‌‌单模光纤&#xff08;Single-Mode Fiber, SMF&#xff09;‌和‌‌多模光纤&#xff08;Multi-Mode Fiber, MMF&#xff09;‌。这两种光纤在传输特性、应用场景以及传输距离上存在显著差异。‌12 单模光纤 ‌定义‌&#xff1a;单模光纤…...

SpringMVC的初理解

1. SpringMVC是对表述层&#xff08;Controller&#xff09;解决方案 主要是 1.简化前端参数接收( 形参列表 ) 2.简化后端数据响应(返回值) 1.数据的接受 1.路径的匹配 使用RequestMapping(可以在类上或在方法上)&#xff0c;支持模糊查询&#xff0c;在内部有method附带…...

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组&#xff08;变成类似list列表的形状&#xff09;重复一个数组——np.tile 分组聚集——pandas.…...

Android Greendao的数据库复制到设备指定位置

方法如下&#xff1a; private void export() {// 确保您已经请求并获得了WRITE_EXTERNAL_STORAGE权限// 获取要储存的设备路径String picturesDirPath Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();// 在公共目录下创建…...

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘&#xff1a;异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…...

TitleBar:打造高效Android标题栏的新选择

在Android应用开发中&#xff0c;标题栏是用户界面的重要组成部分。一个好的标题栏不仅能够提升应用的专业感&#xff0c;还能增强用户体验。然而&#xff0c;传统的标题栏实现方式往往存在代码冗余、样式不统一、性能开销大等问题。今天&#xff0c;我们将介绍一个名为TitleBa…...

Lua协同程序Coroutine

Lua 协同程序(Coroutine) 定义 Lua 协同程序(Coroutine)与线程类似&#xff1a;拥有独立的堆栈、局部变量、指令指针&#xff0c;同时又与其它协同程序共享全局变量和其它大部分东西。 协同程序可以理解为一种特殊的线程&#xff0c;可以暂停和恢复其执行&#xff0c;从而允…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...