(转载)从0开始学matlab(第13天)—画图进阶

news2025/1/13 6:02:59

        我们将讨论简单的二维图象(之前已有所介绍)的附加特性。这些特性将允许我们控制 xy 轴上的值的范围,在一个坐标系内打印多个图象,或创建多个图,或在一个图象窗口内创建多个子图像,或提供更加强大的轨迹文本字符控制。还有,我们将向大家如何创建极坐标。

1 控制 xy 轴绘图的上下限

        在默认的情况下,图象的 X Y 轴的范围宽到能显示输入值的每一个点。但是有时只显示这些数据的一部分非常有用,这时你可以应用 axis 命令 / 函数。
        axis 命令 / 函数的一些形式展示在表1 中。其中两个最重要的形式在表中用黑体字标出——它允许程序员设定和修改坐标的上下限。所有形式的完全列表将会在 MATLAB 的在线文件中找到。
        为了说明 axis 的应用,我们将画出函数 f(x)=sinx -2π 2π 之间的图象,然后限定坐标的区域为 0≤x≤π 0≤y≤1
表1 axis函数/命令的形式

        一些 MATLAB 命令似乎不能确定它是个函数还是一个命令。例如,有时 axis 它好像是命令,有时它好像是函数。有时我们把它当作命令 :axis on,在其他时候,我们把他当作函数 :axis([0 20 0 35]) 。遇到这样的情况怎么办 ?
        一个简单的答案是 MATLAB 命令是通过函数来实现的。MALTAB 编译器无论什么时候遇到这个命令,它都能转化为相应的函数。它把命令直接当作函数来用,而不是应用命令语法。下面的两个语句是等价的:
axis on; 
axis ('on');
        无论什么时候 MATLAB 遇到一个命令时,它都会转化一个函数,当命令的参数当作字符串看作相对应函数的参数。所以编译器翻译如下命令 :
garbage 1 2 3

garbage ('1', '2', '3')

        注意只有带有字符参数的函数才能当作命令。带有数字参数的函数只能被当作函数。这就是为什么 axis 有时当作命令,有时被当作函数。

x=-2*pi:pi/20:2*pi;
y=sin(x);
plot(x,y);
title('Plot of sin(x) vs x');

        当前图象坐标轴的上下限的大小由函数 axis 得到。

 
        修改坐标轴的上下限可以调用函数 axis([0 pi 0 1])。当这个函数执行后,产生的图象如下图所示。

 

2 在同一坐标系内画出多个图象

        在一般情况下,创建一个新的图象就要用到一个 plot 命令,前面的数据就会自动消失。这种行为可以通过使用 hold 命令得到修改。当 hold on 命令执行后,所有的新的图象都会叠加在原来存在的图象。 hold off 命令可恢复默认情况,用新的图象来替代原来的图象。
        例如,在同一坐标轴内的画出 sinx cosx 的图象。产生的图象如下图 所示。
x=-pi:pi/20:pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'b-');
hold on;
plot(x,y2,'k--');
hold off;
legend ('sin x','cos x');

 

3 创建多个图象

        MATLAB 可以创建多个图象窗口,每个窗口都有不同的数据。我们用 图象数来区分这 些图象窗口, 图象数 是一个小的正整数。第一个图象窗口称为图 1,第二个图象窗口为图2,依次类推。这些窗口中的一个称为当前图象窗口,所有的新的画图命令将会展示在那个窗口中。
        我们用 figure 函数来选择当前窗口。这个函数的形式为“ figure(n) ”,其中 n 代表图象数。当这个函数被执行后,图 n 将会变为当前图象,执行所有的画图命令。如果这个图象窗口不存在,那么 matlab 将会自动创建。当前图象也可以用鼠标单击选择。gcf 函数用于当于返回当前图象数。当你需要知道当前图象数时,你就把这个函数写入M 文件中。下面的命令用于说明图函数的应用。它将创建两个图象,第一个用来展示 e^ x 的图象,第二个用来展示 e^( -x) 的图象。

4 子图象

        在一个图象窗口中有一系列的坐标系,创建出多个子图象。创建子图象要用到 subplot命令其形式如下
subplot(m,n,p)

        这个命令在当前图象窗口创建了 m×n 个子图象,按 m 行,n 列排列,并选择子图象 p来接受当前所有画图命令。这些子图象以从左向右从上到下编号。例如,命令 subplot(2,3,4)将会创建 6 个子图象,而且 subplot 4 是当前子图象。如果 subplot 命令创建的新坐标系与原来的坐标系相冲突,那么原来的坐标系将会被自动删除。下面的命令将会在同一窗口中创建两个子图象,每一个子图象独立地展示不同的图象。产生的图象如下

5 对画线的增强控制

        之前我们学习了如何设置画线的颜色,样式,符号形式。我们还可以设置其中的 4 种附加的属性。
         在plot 命令中,在自变量和函数之后被指定,形式如下:
plot(x,y,'PropertyName',value,...)

6 文本字符串的高级控制

        我们在画图中可能要用到文本字符串( 比如标题,坐标轴标签 ),这些字符串我们可以黑体,斜体来格式化,也包括特殊的希腊或数学符号。文本的字体通可以通过 stream modifiers 修改。一个 stream modifier 是一个特殊的字符序列,用来告诉编译器改变它的行为。最普通的 stream modifiers 是:
        一旦一个 stream modifier 插入一个文本字符串中,它持续发挥作用,直到这个字符串的结束或消失。如果一个 modifier 后在跟着一个 {} ,只有{}中的文本起作用。特殊的希腊字母或数学符号也可用在文本字符串中。通过嵌入特殊的转义序列来创建这些字符。这些转义序列是支持 T E X 语言的特殊序列的一个子集。在下表 中向大家展示一些转义序列代码的例子。所有转义序列可以在 matlab 在线帮助文本中找到。 如果要打印转义符 \ { } _ ,或 ^ 就必须在前面加上一个反斜杠。
下面的例子用于说明 stream modifier 和特殊字符的应用。

7 极坐标图象

        Matlab 中包括一个重要的函数叫做 polar ,它用于在极坐标系中画图。这个函数的基本形式
如下 :
polar(theta,r)
其是 theta 代表一个弧度角数组, r 代表一个距离数组。它用来画以角度为自变量的函数的极坐标图是非常有用的。
心形麦克风
        为舞台表演设计的麦克风大多都是定向麦克风,它能够增大来自演唱者的信号,抑制后面观众的噪声信号。一个心形麦克风的增益 gain 是关于角度θ的函数,关系式如下
        其中 g 是和特定的心形麦克风有关的常量。 θ 是声源和麦克风之间的夹角。假设一个麦克风的 g 0.5 ,画出函数 Gain 的极坐标图。
        我们必须计算出与角度对应的函数值,然后画出相应的极坐标图。产生的结果如下图所示。注意这种麦克风叫做心形麦克风,所以得出来曲线的形状像颗心。
% 脚本文件: microphone.m
%
% 目的:
% 该程序绘制了一个心形麦克风的增益图案。
%
% 定义变量:
% g - 麦克风增益常量
% gain - 角度函数的增益
% theta - 角度,相对于麦克风轴(弧度)
%
% 计算角度与增益
g = 0.5;
theta = 0:pi/20:2*pi;
gain = 2 * g * (1 + cos(theta));
% 绘制增益
polar(theta, gain, 'r-');
title('角度\it\theta对增益的影响');

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

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

相关文章

【c语言】全部知识点总结

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

前端如何做单元测试? 看这篇就入门了

前言 对于现在的前端工程&#xff0c;一个标准完整的项目&#xff0c;通常情况单元测试是非常必要的。但很多时候我们只是完成了项目而忽略了项目测试。我认为其中一个很大的原因是很多人对单元测试认知不够&#xff0c;因此我写了这边文章&#xff0c;一方面期望通过这篇文章…

基于DDSRF正负序分离方法的不平衡电网PQ控制策略_平衡电流控制

0.前言 对于并网逆变器而言&#xff0c;电网会存在不平衡的情况。在这种情况下&#xff0c;不平衡的电网电压可以分解成为正序、负序和零序分量。并网逆变器通常期望能够实现单位功率因数并网&#xff0c;向电网注入对称的正弦电流&#xff0c;所以此时的微电网逆变器控制策略显…

DC-9靶机-简单谈一下端口敲门技术 (Port Knocking)

前言 在打靶机DC-9时&#xff0c;爆破SSH时一直显示失败&#xff0c;经过查阅才知道原来是对端口做了“隐藏”&#xff0c;需要通过 Port Knocking 来主动开启&#xff0c;由于平时接触到的机会不多&#xff0c;所以这里简单记录一下&#xff0c;加强一下印象&#xff0c;也希…

Systrace系列7 —— Vsync 解读

本文主要是是介绍 Android 中的 Vsync 机制。文章会从 Systrace 的角度来看 Android 系统如何基于 Vsync 每一帧的展示。Vsync 是 Systrace 中一个非常关键的机制,虽然我们在操作手机的时候看不见,摸不着,但是在 Systrace 中我们可以看到,Android 系统在 Vsync 信号的指引下…

Tomcat系统架构浅析

大家好&#xff0c;我是易安&#xff01; 今天咱们就来一步一步分析Tomcat的设计思路&#xff0c;看看Tomcat的设计者们是如何设计一个复杂系统&#xff0c;怎么设计顶层模块&#xff0c;以及模块之间的关系。 Tomcat总体架构 我们知道如果要设计一个系统&#xff0c;首先是要…

特征缩放(Scale Features)、特征缩放预测​CO2 值、df列索引扩展

目录 1、特征缩放 2、预测CO2 值 3、df列索引扩展 1、特征缩放 特征缩放可以用于不同的度量单位。度量单位不同的情况下&#xff0c;特征的数值大小也会有所不同&#xff0c;这可能会影响到某些机器学习算法的表现。例如&#xff0c;如果一个特征的单位是英寸&#xff0c;而另…

DAB-DETR代码学习笔记

先上一张整体架构图 &#xff1a; 代码地址&#xff1a;GitHub - IDEA-Research/DAB-DETR: [ICLR 2022] DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR 论文地址&#xff1a; https://arxiv.org/pdf/2201.12329.pdf 文章全名《DYNAMIC ANCHOR BOXES ARE BETTER …

建模杂谈系列223 Q-Learning示例的代码拆解分析

说明 找到了一个合适的例子&#xff0c;然后我对其中的内容进行了拆解分析。我觉得代码表达的内容比伪代码清晰多了。 这次算是补砖了(监督无监督强化)&#xff0c;过去实际上接触过很多强化体系内的基本工具&#xff0c;但一直没有开始做&#xff0c;部分原因是没时间&#…

Java 与排序算法(5):归并排序

一、归并排序 归并排序&#xff08;Merge Sort&#xff09;是一种基于分治思想的排序算法。它将待排序的数组分成两个长度相等的子数组&#xff0c;然后对这两个子数组分别进行归并排序&#xff0c;最后将两个排好序的子数组合并成一个有序的数组。 具体实现过程如下&#xf…

【国内chatgpt使用方法合集】(5月22日已更新)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

Elasticsearch文档操作:初学者指南(2023年最新版包含DSL语句的使用和RestHighLevelClient在Java中的使用)

2023年还没有学习Elasticsearch?&#xff0c;那么您将错过最强大、最通用的编程语言之一。 本文将介绍在Elasticsearch对文档分别使用DSL语句和Java High Level REST ClientAPI来对文档进行操作。获取更多信息查看官网帮助文档 运行环境&#xff1a; Linux&#xff0c;docke…

驱动开发DAY6

非阻塞IO 在应用程序中读取硬件数据时&#xff0c;无论硬件数据是否准备完毕&#xff0c;read&#xff08;&#xff09;函数不会阻塞&#xff0c;继续向下执行 阻塞IO 当应用程序中读取硬件数据时&#xff0c;在硬件数据没有准备好时&#xff0c;进程会阻塞在read&#xff08;&…

C语言——如何写出好的代码?

哈喽&#xff0c;大家好&#xff0c;今天我们来学习如何才能写出优秀的代码&#xff0c;主要讲的是assert和const的用法。 首先&#xff0c;什么样的代码才算的上是优秀的代码呢&#xff1f;应该符合下面的要求&#xff1a; 1. 代码运行正常 2. bug很少 3. 效率高 4. 可读性高 …

自抗扰PID(梯形图源代码)

有关ADRC的详细算法和源代码,请参看专栏的系列文章,这里不再赘述,常用链接如下: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所…

x210---根文件系统制作

一、busybox的移植 1.1、busybox源码下载 (1)busybox是一个开源项目&#xff0c;所以源代码可以直接从网上下载。 (2)busybox的版本差异不大&#xff0c;版本新旧无所谓。 (3)下载busybox可以去linuxidc等镜像网站&#xff0c;也可以去www.busybox.net官方网站下载。 1.2、修…

技术人如何写简历?(文末有福利)

前言 笔者在滴滴、阿里和字节时候也面试了不少人&#xff0c;看过形形色色的简历没有上百也有大几十份了。校招季也快到了&#xff0c;这里总结自身经验聊一下 技术人的简历如何去写面试官是怎么样从一份简历去开展后续的面试 简历的作用 简历是你向一家公司求职的“敲门砖…

数据结构学习之路-集合

集合Set 集合的特点集合的内部实现&#xff08;使用链表&#xff09;集合的内部实现&#xff08;使用红黑树&#xff09;复杂度分析使用红黑树实现集合的限制 集合的特点 不存放重复的元素常用于去重 例如&#xff1a;存放新增的IP地址&#xff0c;统计新增IP量&#xff1b;存…

torch中的model.eval()、model.train()详解

&#x1f468;‍&#x1f4bb;个人简介&#xff1a; 深度学习图像领域工作者 &#x1f389;工作总结链接&#xff1a;https://blog.csdn.net/qq_28949847/article/details/128552785 链接中主要是个人工作的总结&#xff0c;每个链接都是一些常用demo&#xff0c…

Laravel框架05:模型和自动验证

Laravel框架05&#xff1a;模型和自动验证 一、模型&#xff08;AR模式&#xff09;概述二、定义模型三、调用模型四、基本操作1. 添加数据① AR模式② Request 2. 查询数据3. 修改操作① AR模式② update 4. 删除操作 五、控制器验证1. 基本语法2. 输出错误信息 一、模型&…