MATLAB基础教程(11)——二维中的数据可视化(续)

目录

今天目标:

画一个图像并且给图像加上标题

子图绘制

一些小知识

grid 设置框线

box 设置边框

polar() 绘图

今天小结


今天目标:


画一个图像并且给图像加上标题

首先我们画一张很简单的图形,比如就画一个y = cos x 的图像吧。

代码如下:

%% 给图形加上标题(这个我记得前面提过)syms x; % 声明一个变量xx = 0:0.1:2*pi; % x的取值范围,从0-2*pi,以0.1为分割取值y = cos(x); % 函数figure; % 打开绘图窗口plot(y); % 画出y,如果你想更改曲线形状,可以参考第10讲,比如% plot(y, 'o--c')

如果我们想给这个图形加上一个标题,我们只需要使用 title() 即可:

代码如下:

%% 给图形加上标题(这个我记得前面提过)syms x; % 声明一个变量xx = 0:0.1:2*pi; % x的取值范围,从0-2*pi,以0.1为分割取值y = cos(x); % 函数figure; % 打开绘图窗口plot(y); % 画出y,如果你想更改曲线形状,可以参考第10讲,比如% plot(y, 'o--c')title('余弦函数');

猛一看,这个代码很平常,好像平平无奇的,但是,请你仔细看plot的部分!!!!

有些同学可能依稀记得,我使用过 ploy(x, y) 去画图,可是今天我仅仅使用了 plot(y) 就把图画了出来,大家可以参考前面第十讲:

这是为什么呢?如果大家都能认真想想再,相信大家都能发现问题所在。

额外知识:这个手型工具可以拖动图像(坐标轴也会变化)

上面的图像有一个很大的问题:请看图像的横坐标栏,如下图(后一个图是使用手型工具拖动第一个点到靠近横坐标轴时的图片):

或者我们也可以使用这个工具(学名是数据光标),来查看这个点的值:

 

咦~不对啊,为什么坐标轴是1-63呢?我的x的取值范围不是0-2*pi吗?

咦~你怎么知道是63而不是64呢?

我们看这个坐标轴,60+,我们能想到什么?

没错,我们的 x 是这样定义的:x = 0:0.1:2*pi ,也就是说,x 看起来是连续的,实际上是间断的(这个前面也讲过咯),其实 x 的值是一个矩阵,里面存储的分别是0 0.1 0.2 ...一直到2*pi这个数。而 2*pi 大概是6.28多一点点,所以最多到6.2就停止了,故 x 的值其实是这63个数据,而 y = cos x,实质上是相对于每一个 x 的值,计算cos的值,于是乎,当x = 0时,y = cosx => y = 1,以此类推,我们可以在工作区看到x y的真实的值:

如此,我们就可以知道 plot 的作用了。

plot 画图,如果只有一个参数,那么横坐标就是1 2 3 .。。。。以此类推的,参数作为当横坐标作为1 2 3 .。。时的值,对于 plot(y),我们就看到,当横坐标是1 时,纵坐标取1(y = 1),当横坐标是2时,纵坐标取0.9950(y = 0.9950)。。。。以此类推。

而如果有两个参数时,第一个参数是横坐标,第二个是纵坐标,两个参数中的数值的量要相同,这样就能对应画图,比如我们使用plot(x,y)和plot(y, x):

代码如下:

%% 给图形加上标题(这个我记得前面提过)syms x; % 声明一个变量xx = 0:0.1:2*pi; % x的取值范围,从0-2*pi,以0.1为分割取值y = cos(x); % 函数figure; % 打开绘图窗口plot(x, y); % 画出y,如果你想更改曲线形状,可以参考第九讲,比如% plot(y, 'o--c')title('plot(x, y)');figureplot(y, x);title('plot(y, x)');

额外思考:如果plot的参数是三个呢?

如果你这个时候真的写了下面的代码:

%% plot里面三个参数的情况clear all;syms x;x = 0:0.1:2*pi;y = sin(x);z = cos(x);figure;plot(x, y, z);

那么不出意外你的matlab应该会闪退了。

还记得我们上一讲说,plot() 是可以设置函数曲线的点形状、曲线样式以及颜色的,其实,这个第三个参数需要是字符串(比如'x--c'):

代码如下:

%% plot里面三个参数的情况clear all;syms x;x = 0:0.1:2*pi;y = sin(x);figure;plot(x, y, 'x--c');title('plot里面三个参数的情况');

第三个参数的形状设置上一讲说过,我这里再把那个图片复制过来了(不要忘记,这三个符号不区分前后顺序。还有propertyname参数,其实没啥用,这里提一下大家知道就行了,我们平常画图下面这个表应该够用了,所以这里就不讲了。)

如此,相信大家能很深刻的理解plot()的作用了。


子图绘制

使用subplot() 可以将一个figure分为多个区块,这是个很简单的函数,看代码:

%% 子图绘制x = 0:0.1:2*pi; % 设置变量范围y = sin(x); % 第一个函数z = cos(x); % 第二个函数figure; % 创建一个图像画板subplot(3, 2, 1); % 给图像画板分区为3行2列,选中第一个区域plot(x, y); % 在这个区域画图title('y = sin x'); % 这个区域的名字subplot(3, 2, 6); % 给绘图花瓣分区为3行2列,选中第六个区域plot(x, z); % 绘制z = cosxtitle('z = cos x'); % 命名

最后出现的图像是这样的:

额外的思考:如果我想画两张图,且他们的分区方式不一样的?我们是否可以画不同图时划分区域形状不同,选中不重叠的部分画图呢?让我们试一试吧!

%% 子图绘制x = 0:0.1:2*pi; % 设置变量范围y = sin(x); % 第一个函数z = cos(x); % 第二个函数figure; % 创建一个图像画板subplot(2, 1, 1); % 给图像画板分区为2行1列,选中第一个区域,其实就是第一行plot(x, y); % 在这个区域画图title('y = sin x'); % 这个区域的名字subplot(2, 3, 6); % 给绘图花瓣分区为2行3列,选中第六个区域plot(x, z); % 绘制z = cosxtitle('z = cos x'); % 命名

下面是输出的结果,看来是符合我们的预期的:

所以,我们划分区域时,可以根据这个图像的需求,灵活划分,这个subplot只是逻辑上的划分区域,并不是真的划分了区域!!!!


一些小知识


grid 设置框线

grid on 开启框线,这个默认是关闭的( grid off )

代码如下:

%% 子图绘制x = 0:0.1:2*pi; % 设置变量范围y = sin(x); % 第一个函数z = cos(x); % 第二个函数figure; % 创建一个图像画板subplot(2, 1, 1); % 给图像画板分区为3行2列,选中第一个区域plot(x, y); % 在这个区域画图title('y = sin x'); % 这个区域的名字grid on; % 给这个区域设置框线subplot(2, 3, 6); % 给绘图花瓣分区为2行3列,选中第六个区域plot(x, z); % 绘制z = cosxtitle('z = cos x'); % 命名


box 设置边框

box off 关闭图像的边框,这个默认是打开的(box on),其实我感觉没啥用,主要是为了临界处方便观察吧

代码就如下:

%% 子图绘制x = 0:0.1:2*pi; % 设置变量范围y = sin(x); % 第一个函数z = cos(x); % 第二个函数figure; % 创建一个图像画板subplot(2, 1, 1); % 给图像画板分区为3行2列,选中第一个区域plot(x, y); % 在这个区域画图title('y = sin x'); % 这个区域的名字box off; % 给这个区域设置边框关闭subplot(2, 3, 6); % 给绘图花瓣分区为2行3列,选中第六个区域plot(x, z); % 绘制z = cosxtitle('z = cos x'); % 命名


polar() 绘图

有些图像只有极坐标形式,很难解出或者没有直角坐标形式,所以需要用到极坐标系,极坐标画图参数和Plot()几乎是一样的,看一个例子吧:

代码如下:

%% polar()x = 0:0.1:2*pi; % 设置变量范围y = cos(x).^2+sin(x).^2;% 第一个函数,在matlab中,^ 表示乘方,不是异或。% 但是matlab中都是矩阵,所以需要在运算符前加一个 . ,表示矩阵中所有元素都平方% 我们都知道,z 就是圆的极坐标表示形式了。figure; % 创建一个图像画板subplot(2, 1, 1); % 给绘图花瓣分区为2行1列,选中第一个区域polar(x, y); % 绘制y = cosxtitle('y = cos(x)^2+sin(x)^2'); % 命名% 分区是为了告诉大家,polar()也能在分区中操作


今天小结

今天学习了下面的内容:

  • plot()画图和plot()到底怎么工作的
  • matlab中一些小工具如数据光标的使用
  • 画极坐标
  • 画子图
  • 一些小函数

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

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

相关文章

没有bug队——加贝——Python 练习实例 33,34

目录 33.题目: 小知识: 参数 返回值 我们换种写法: 34.题目: 我们也换种写法: 33.题目: 按逗号分隔列表。 小知识: join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串…

没有bug队——加贝——Python 练习实例 35,36

目录 35.题目:文本颜色设置。 小知识: 36.题目:求100之内的素数。 何为素数? 35.题目:文本颜色设置。 class bcolors:HEADER \033[95mOKBLUE \033[94mOKGREEN \033[92mWARNING \033[93mFAIL \033[91mENDC …

C语言各种类型数据的输出显示

之前我们使用 puts 来输出字符串。puts 是 output string 的缩写,只能用来输出字符串,不能输出整数、小数、字符等,我们需要用另外一个函数,那就是 printf。 printf 比 puts 更加强大,不仅可以输出字符串,…

没有bug队——加贝——Python 练习实例 37,38

目录 37.题目:对10个数进行排序。 Python sort()方法 语法 参数 返回值 Python sorted函数及用法 语法 返回值 38.题目:求一个3*3矩阵主对角线元素之和。 37.题目:对10个数进行排序。 程序分析:可以利用选择法&#xff…

C语言中的整数

整数是编程中常用的一种数据,C语言通常使用int来定义整数(int 是 integer 的简写)。 现代操作系统中,int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit)。如果不考虑正…

没有bug队——加贝——Python 39,40

目录 39.题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 40.题目:将一个数组逆序输出。 39.题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 程序分析…

C语言中的二进制、八进制和十六进制的表示

二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法&#xf…

没有bug队——加贝——Python 41,42

41.题目:模仿静态变量的用法。 python中是不支持静态变量的,所以可以通过以下的方法来实现静态变量的功能: 代码1: class CTest(object):#python静态变量实现方法i__initNonedef __new__(cls,value):if cls.i__init is None:cl…

C语言中的正负数及其输出

在数学中,数字有正负之分。在C语言中也是一样,short、int、long 都可以带上正负号,示例 //负数 short a1 -10; short a2 -0x2dc9; //十六进制 //正数 int b1 10; int b2 0174; //八进制 int b3 22910; //负数和正数相加 long c (-9)…

没有bug队——加贝——Python 43,44

目录 43.题目:模仿静态变量(static)另一案例。 44 - Python 两个矩阵相加 43.题目:模仿静态变量(static)另一案例。 程序分析:演示一个python作用域使用方法 #43 class Num:nNum 1def inc(self):self.nNum 1print (nNum %d % self.nN…

数学建模学习笔记(一)——层次分析模型

1.模型简介 层次分析模型主要应用于综合评价类问题,例如:怎样购买最划算、怎样养殖才能获得最大经济效益等等。 2.下面使用一道例题来说明这个问题 问题:你想要购置一台个人电脑,考虑价格、性能等因素,如何做出决策…

没有bug队——加贝——Python 45,46

目录 45.题目:统计 1 到 100 之和。 46.题目:求输入数字的平方,如果平方运算后小于 50 则退出。 实现1 实现2 Python While 循环语句 跳过循环 无限循环 循环使用 else 语句 45.题目:统计 1 到 100 之和。 #45 tmp 0 for…

没有bug队——加贝——Python 47,48

目录 47.题目:两个变量值互换。 实现1 实现2 48.题目:数字比较。 47.题目:两个变量值互换。 实现1 a 10 b 20 print(x ,a ,y ,b) a,b b,a print(x ,a ,y ,b) 输出: 实现2 #47 def exchange(a,b):a,b b,areturn (a,…

Latex笔记(一)—— 复杂表格的制作

引言 表格是论文写作中的重要一环,尤其是较为复杂的三线表的制作。 在网上寻找了很久发现没有比较综合的解释方法,因此将查阅的关于复杂三线表的制作的资料总结成了一篇笔记。 由于笔记是用Latex写作的,因此这里只放上Latex生成的pdf的截图&…

C语言转义字符的使用

字符集(Character Set)为每个字符分配了唯一的编号,我们不妨将它称为编码值。在C语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字…

数学建模学习笔记(二)——Topsis优劣解距离法

(续上篇文章)层次分析法的局限 上一篇文章中,层次分析法有这样的局限 评价决策层不能太多;数据是已知的的话,便无法使用层次分析法进行精确的分析评价; 因此,为对这些情况做出更为精准的分析…

没有bug队——加贝——Python 49,50

49.题目&#xff1a;使用lambda来创建匿名函数。 lambda函数 紧跟的是定义的自变量&#xff0c;因变量等&#xff0c;其后是函数 MAXIMUM lambda x,y : (x > y) * x (x < y) * y MINIMUM lambda x,y : (x > y) * y (x < y) * xif __name__ __main__:a 10…

没有bug队——加贝——Python 51,52

目录 知识点&#xff1a; 51.题目&#xff1a;学习使用按位与 & 。 52.题目&#xff1a;学习使用按位或 | 。 知识点&#xff1a; 运算符描述实例&按位与运算符&#xff1a;参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 …

数学建模学习笔记(三)——插值算法

插值算法简介 数据分析是在大数据时代下不可获取的一环&#xff0c;合理、全面地分析数据&#xff0c;能够使得决策者在决策时作出最为明智的决定。在数据分析过程中&#xff0c;常常可以使用插值算法来根据已知的数据估算出未知的数据&#xff0c;从而模拟产生一些新的值来满…

没有bug队——加贝——Python 53,54

目录 53.题目&#xff1a;学习使用按位异或 ^ 。 54.题目&#xff1a;取一个整数a从右端开始的4〜7位。 运算符描述实例&按位与运算符&#xff1a;参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 &#xff0c;二进制解释&#xf…