中国史之【纣王即位】:
商纣王即位,征服夷方,得大量俘虏,商的国力因此虚耗。纣王刚愎自用,囚箕子,杀比干,后被周武王所灭,导致商朝灭亡。
——来源:全历史APP
俗话说:“好记性不如烂笔头”,多写写多记记,总不会错。多一些不为什么的坚持,少一些功利主义的追求。
今天介绍matlab的数据结构(1),为了直观理解,本文直接以结果截图为例,这点代码并不需要写成文本,最好自己跟着打一遍。本内容参考自《实用MATLAB图像和视频处理》第三章。
- 对于matlab2021的安装,可以参考公众号【CV之道】的文章:【matlab安装】手把手图文并茂安装matlab2021(win10版)
1、简单的数据操作
(1)将MATLAB用作一个计算器
![](https://img-blog.csdnimg.cn/d4ca8896be254b7e9dedf15a383e470f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_19,color_FFFFFF,t_70,g_se,x_16)
变量ans是在不指定参数时,用来保存当前的答案(answer)。另外,无论是python、c语言,还是matlab,都需要使用英文的半角符,上面就因为写了个中文的分号出错了。
从上面也可以看出,语句后分号的作用是不在命令行窗口显示结果,否则都会自动显示ans值。
(2)使用变量执行计算
![](https://img-blog.csdnimg.cn/ce6fac4383fc4578a58ee2ab1008095d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_11,color_FFFFFF,t_70,g_se,x_16)
从上图可以看出,变量需要划分大小写,这点不要疏忽。从工作区也可以看出当前的各种变量名和对应的数值,方便debug。
![](https://img-blog.csdnimg.cn/d0b7b6b127bd432a8f7d69c14ad22348.png)
(3)一些常见的变量
![](https://img-blog.csdnimg.cn/a15d6845e4934103a9d60e73404029b2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_20,color_FFFFFF,t_70,g_se,x_16)
从上面可以看出,pi的默认数值是3.1416,但是这种特殊变量也是可以重写的,上图中我们重写为2。如果要撤销,那就直接将工作区变量清空即可。
除此之外,还有其他特殊变量。如下:
![](https://img-blog.csdnimg.cn/9eb0543bfcc0450d8f26f8b97ae15322.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_19,color_FFFFFF,t_70,g_se,x_16)
(4)清洁matlab环境
清空工作区变量是clear all,也可以写成clear,如果要清空某个变量,则写clear 变量名,清空命令窗口是clc。
(5)创建一个3*3的矩阵
![](https://img-blog.csdnimg.cn/4adcb4e2040745bca81ea6ee08cf4446.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_13,color_FFFFFF,t_70,g_se,x_16)
在这个语句中,分号扮演换行的功能。
2、冒号操作符
冒号操作符是很实用的操作符(:),它可用来生成一个数字矢量,也就是向量。如果使用三个参数,那么中间的参数指定生成序列的方式,具体如下:
![](https://img-blog.csdnimg.cn/6f1fb8b2e49e4322a5201d8eb1940990.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_18,color_FFFFFF,t_70,g_se,x_16)
从上图可以看出,5 : -1 : 1的意思是从5到1,逐渐减一,所以生成的序列是5、4、3、2、1,注意是顾首又顾尾,这和python的切片有点区别。
而1:3:8的意思是从1到8,所以是1、1+3=4、1+3+3=7,而再往上加3就是10,超过8了。注意并不是一定要有尾,所以最终是1、4、7,而不是1、4、7、8。
【练习一下】:
写一个语句,生成一个值从0到pi,每次增加pi/4的向量。
![](https://img-blog.csdnimg.cn/ca02df259762469aa8e259cfcc82c577.png)
另外,冒号操作符也可以返回一个矩阵的一整行或一整列。(行,列)中冒号是指所有行或所有列。注意,矩阵下标从1开始。
![](https://img-blog.csdnimg.cn/04d68723249542948343f7dea4f7bc6c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_14,color_FFFFFF,t_70,g_se,x_16)
【练习一下】:
写一行代码,生成矩阵a,但使用冒号操作符来生成每一行的数字序列而不是显式地写出来。答案如下:
![](https://img-blog.csdnimg.cn/e01950241518443c97dc38681e174117.png)
另外,冒号操作符也可以用函数colon来代替,如下:
![](https://img-blog.csdnimg.cn/d95281d0089e446580828d4a300b69b7.png)
上面的1:2:9只能适用于知道开头结尾以及每个值之间的距离,若希望生成一个范围在两个数字间的数字向量,但仅知道需要的值数量,比如生成4个pi/4到pi之间的值,可以使用linspace函数。
![](https://img-blog.csdnimg.cn/e1663d6adc2b43abaf8dffb756f08ddf.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_14,color_FFFFFF,t_70,g_se,x_16)
比如,linspace(-1,5,4)的意思是生成4个从-1到5的均衡序列。其实也好计算,就是自己计算出间隔,比如-1到5,总距离是6,需要生成4个数,也就是3个间隔,所以偏差就是6/3=2,所以等价于-1:2:5。
![](https://img-blog.csdnimg.cn/e069503ddf3c413494b984f7bee29499.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_10,color_FFFFFF,t_70,g_se,x_16)
【声明】:学习笔记基于互联网上各种学习资源的个人整理。
以上是本期内容,下期介绍matlab的数据结构(2)。
我叫小保,一名计算机视觉爱好者、学习者、追随者,欢迎关注我一起学习。
![](https://img-blog.csdnimg.cn/15d674e53cbc42aca66335fd763dff6b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY3blsI_nmb1famFja2tv,size_14,color_FFFFFF,t_70,g_se,x_16)