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

news/2024/4/18 16:55:41

        我们将讨论简单的二维图象(之前已有所介绍)的附加特性。这些特性将允许我们控制 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.ppmy.cn/news/93237.html

相关文章

数据结构学习之路-集合

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

基于特征的广义高斯分布方法在超宽带(UWB)室内定位系统中检测NLOS

介绍 在各种室内定位技术中,超宽带(Ultra-wideband.UWB)由于其极短脉冲的特性,提供了良好的时间分辨率,因此可以实现高精度室内定位。然而,当NLoS信号出现时,UWB IPS的精度可能会受到显著影响。当收发器之间的信号被障碍物反射或阻挡时,就存在NLoS条件。在这种情况下,会…

基于深度学习的交通标志检测和识别(从原理到环境配置/代码运行)

项目是一个基于Python和OpenCV的交通标志检测和识别项目,旨在使用计算机视觉和深度学习技术对交通标志进行检测和分类。本文将从介绍项目原理和框架开始,详细介绍该项目的实现过程和技术细节,最后给出项目的安装和使用方法。 前后结果对比 …

配置工具篇(tmux+ranger+lazygit)

Tmux 简介 官网解释:tmux是一个终端多路复用器:它允许在单个屏幕上创建、访问和控制多个终端。tmux可以从屏幕上分离出来,继续在后台运行,然后再重新连接。 此版本在Open BSD、Free BSD、Net BSD、Linux、mac OS和Solaris上运行…

Vue之插值表达式,v-bind(单向绑定),v-model(双向绑定)

文章目录 前言一、插值表达式二、v-bind指令三、v-model指令总结 前言 插值表达式{{…}} v-bind v-model 一、插值表达式 插值表达式支持匿名变量、三目运算符、四则运算符、比较运算符、数值类型的一些内置方法&#xff0c;还有数组的索引取值方法和对象属性。 <!DOCTYPE…

Android Log分析-系统重启

重启原因分类 1.上层造成重启 system_server被杀 watchdog重启 重要线程阻塞 2.kernel造成重启 空指针 非法地址 3.kernel watchdog造成重启,原因不确定 内存原因 nand驱动 log查看步骤及关键字 1. 重启后的kernel.log或misc/cmdline.log 在log最前面…

通过小程序获取公众号openid

需求: 由于小程序不能直接向用户发送模板消息&#xff0c;所以需要用公众号向用户发送模板消息。 于是需要将小程序的openid和公众号的openid绑定在一起。提供两种思路&#xff1a; 方法一&#xff1a; 1.微信小程序和公众号都绑定到微信开放平台上&#xff0c;这样小程序登录…

微服务架构演变

微服务架构演变 认识微服务 服务架构演变 单体架构&#xff1a;将业务的所有功能集中在一个项目种开发&#xff0c;打成一个包部署 优点&#xff1a; 架构简单部署成本低 缺点&#xff1a; 耦合度高 分布式架构&#xff1a;根据业务功能对系统进行拆分&#xff0c;每个业…

devm_of_led_classdev_register 函数

Linux version: 4.14 Code link: Linux source code (v4.14) - Bootlin 1 devm_of_led_classdev_register 函数 int devm_of_led_classdev_register(struct device *parent,struct device_node *np,struct led_classdev *led_cdev) {struct led_classdev **dr;int rc;dr de…

Windows本地快速搭建SFTP文件服务器,并端口映射实现公网远程访问

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

解读智慧城市建设的关键角色:GIS技术的应用与优势

近年来&#xff0c;随着城市化进程的加快和信息技术的迅猛发展&#xff0c;智慧城市成为了城市发展的重要方向。而在智慧城市建设中&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术的应用正发挥着越来越重要的作用。GIS技术以其独特的地理空间分析能力&#xff0c;为…

结对编程 --- 大部分程序员喜欢的编程方式

一、介绍 结对编程起源时间可以追溯到 1990 年代早期。这种编程方法最初由 Jim Highsmith 和 Alistair Cockburn 等人提出。后来&#xff0c;Kent Beck 和 Ward Cunningham 等人将其发展成为一种敏捷开发方法&#xff0c;被称为“极限编程”&#xff08;Extreme Programming&am…

WMS 概述 -- “窗口管理员“

WMS 概述 -- "窗口管理员" 1、WMS 职责2、涉及元素3、WMS、AMS与Activity间的关系 1、WMS 职责 WMS职责理解窗口管理WMS 是窗口的管理者&#xff0c;它负责窗口的启动、添加和删除&#xff0c;另外窗口的大小和层级也是由WMS 进行管理的。窗口管理的核心成员有 Disp…

Android 12.0Launcher3 去掉workspace长按弹出壁纸弹窗

1.概述 在12.0的系统开发中,在Launcher3开发中,在长按屏幕的时候,会弹出窗口,修改主屏幕配置,壁纸,等信息,由于要默认设置一些配置 不想让用户修改相关配置,这时候就需要去掉长按弹窗功能了,禁止修改相关配置 2.Launcher3 去掉workspace长按弹出壁纸弹窗的核心类 /p…

stable-diffusion-webui(1.2.1版本) win10系统本地电脑部署

在安装stable-diffusion-webui(1.2.1版本)之前需要确认win10本地电脑具有的环境 1.显卡类型&#xff1a;NVIDIA&#xff08;英伟达&#xff09; 建议显存高于4G以上&#xff0c;这样512*512的还是可以运行的 2.python(版本必须最好是3.10.6&#xff09;和 git最新版 正式…

【华为OD机试真题2023B卷 JAVA】TLV解码

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 TLV解码 知识点数组字符串 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: TLV编码是按[Tag Length Value]格式进行编码的,一段码流中的信元用Tag标识,Tag在码流中唯一不重复,Length表示信元Value的长度,Value…

历次工业革命的本质,都是能源转换的革命。(电学史的伟大瞬间)【电的本质】

文章目录 引言I 电学史的伟大瞬间1.1 电的本质1.2 电池的发明(电的性质)1.3 动手改造和利用电(电和磁的关系)1.4 电的普及和应用引言 历次工业革命的本质,都是能源转换的革命。 第一次工业革命:蒸汽机让人类走出了以人力和畜力为动力来源的时代 第二次工业革命:以电力为工…

STP生成树协议(超详细小白也能看懂)

一、为什么要用STP 为了提高网络可靠性&#xff0c;交换网络中通常会使用冗余链路。然而&#xff0c;冗余链路会给交换网络带来环路风险&#xff0c;并导致广播风暴以及MAC地址表不稳定等问题&#xff0c;进而会影响到用户的通信质量。生成树协议STP&#xff08;Spanning Tree …

一篇文章带你了解Netty

Netty 传统的IO模型的web容器&#xff0c;比如老版本的Tomcat&#xff0c;为了增加系统的吞吐量&#xff0c;需要不断增加系统核心线程数量&#xff0c;或者通过水平扩展服务器数量&#xff0c;来增加系统处理请求的能力。有了NIO之后&#xff0c;一个线程即可处理多个连接事件…

组件通信,slot 插槽,封装组件,UI组件库

<template><div class"box"><!-- 使用儿子 --><!-- 传递参数给儿子使用用&#xff1a;msg --><!-- 在父级里面定义属性传给子集 --><!-- 父级定义的属性我们要在子集里面拿到 --><itemsonspendatafnv-for"(v,i) in data…