晚上好!美赛终于结束了,不知道大家有没有从最后一晚分秒必争,奋斗到最后一刻的惊魂状态中恢复过来呢?
虽说不同的编程语言主要使用的数据类型不同,但对于基本的数据类型的定义是一致的,例如整形 int ,浮点型 float,字符串 String ,数组 array ,布尔值 blean,
MATLAB提供了多种数据类型,供使用者在不同的情况下使用,一般有
整型/浮点型矩阵或数组
字符和字符串
逻辑true或者false
函数句柄
结构(Structures)数组、元胞(cell)数组、分类数组(Categorical)
Map容器、日期和时间、表格、时间序列等。
可以看到,MATLAB的数据类型可以说是比较全面的了,熟悉之后,对学习其他编程语言也是很有帮助。(举个栗子,C语言的基本数据类型包括字符、整型、单精度实型、双精度实型和空类型这五种)
进入正题
一样的,小编在下栏简单说一下数据类型
什么是数据类型?
数据类型,在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在声明变量时也可指定它的数据类型。所有变量都具有数据类型,以决定能够存储哪种数据。
数据类型包括原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函数类型。
简单来说,数据类型就是值的集合,它的作用是把数据分成所需内存大小的数据
因为间隔较久,如果忘记了可以看看我们前面的文章
包括有符号/无符号的整数、单精度和双精度浮点数。 默认情况下,MATLAB存储数据使用的是双精度浮点数(Double型)。使用者一般不可以更改默认的数据类型和精度【但是可以选择用非默认的整数或者单精度来储存矩阵或者数组】整数和单精度数组比双精度能节省更多的内存空间,灵活运用可以更高效地利用内存。
所有的数值型数组都支持基本的数组操作,比如说数组的重构、使用数学运算符等。数值型数组或矩阵同理
接下来介绍一下逻辑型数据。
所谓逻辑数据类型,就是仅具有“TRUE”和“FALSE”两个数值的一种数据类型。一般来说,逻辑真用1表示,逻辑假用0表示。在MATLAB中,参与逻辑运算或者关系运算的并不一定必须是逻辑型的数据,任何数值都可以参与逻辑运算。在逻辑运算中,MATLAB将所有的非零值作为逻辑真来进行计算,而将零值作为逻辑假来计算。
和一般的数值型类似,逻辑类型的数据可以通过数值型转换,或者使用创建函数生成。
创建逻辑类型矩阵或者数组的函数主要有以下3个。
(1)logical函数,可将任意类型的数组转换成逻辑类型。其中非零元素为真,零元素为假。
(2)true函数,产生全部元素为逻辑真的数组。
(3)false函数,产生全部元素为逻辑假的数组。
【利用函数建立逻辑类型数组】
>> rand('state',0)
>> A=rand(3,2) % 产生测试矩阵(随机)
0.2311 0.7621 0.4447
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
>> A(A<0.6)=0 % 产生测试矩阵
0 0.7621 0
0.6068 0 0.6154
0 0 0.7919
>> B=logical(A) % 计算逻辑型矩阵B
0 1 0
1 0 1
0 0 1
>> C=true(size(A)) % 生成全为true的矩阵
1 1 1
1 1 1
1 1 1
>> D=false([size(A),2]) % 生成全为false的矩阵
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
为了方便比较,我们在命令窗口中输入【whos】,查看现有变量和数据类型
>> whos
Name Size Bytes Class Attributes
A 3x2 48 double
B 3x2 6 logical
C 3x2 6 logical
D 3x2x2 12 logical
对比还是比较明显,逻辑类型的数组每一个元素仅占用一个字节的内存空间,所以矩阵B尽管和矩阵A的尺寸一样,但是在内存的占用上却有相当大的差距,并且属于不同的数据类型,这会影响计算的效率与数据的处理方式,因为逻辑型的数据在使用二进制进行计算时速度要快的多。
MATLAB中,可以自由组合运算符,组成更为复杂的运算表达式。
【但要注意】:MATLAB语言中的运算符和其他的高级编程语言一样,具有优先级问题。对运算优先级的掌握,可以使我们正确地完成复杂的运算。下面将MATLAB语言的运算符和计算优先级,按照从高到低的顺序进行排列
(1)括号()
(2)数组的转秩(.’),数组幂(.^),复转秩(’),矩阵幂(^)
(3)代数正(+),代数负(-),逻辑非(~)
(4)数组乘法(.*),数组除法(./),数组除(./),矩阵乘法(*),矩阵右除(/),矩阵左除(\)
(5)加法(+),减法(-)
(6)冒号运算符(:)
(7)小于(),大于等于(>=),等于(==),不等于(~=)
(8)元素与(&)
(9)元素或(|)
(10)短路逻辑与(&&)
(11)短路逻辑或(||)
【注】如果同一级别的运算符出现在一个表达式中,则按照运算符在表达式中出现的次序,由左到右排列。在具体的程序编写过程中,需要牢记运算符优先级并灵活使用。
由于篇幅问题,其余的一些小知识就不一一详述,编辑不易,如果这篇推文对你有帮助,点个好看分享给其他人也不是不可以(*^▽^*)
好的,晚安。(动动手指,给个支持)
• end •
排版 | 半瓶成熟
深度学习与资源共享
轻轻一扫 | 你就知道