Matlab里的数据类型

在Matlab里一共有四大类数据类型:
1、数值类型
2、逻辑类型
3、字符和字符串类型
4、结构体类型

这四大类数据类型的存储都是用矩阵来存储的

1、数值类型

数值类型即存储不同种类变量的类型,数值类型有五种:浮点数、整数、复数、Inf、NaN.

浮点数就是小数,(float,没有简写,但属于实数real number,简写real)
整数就是字面意思,(integer,简写int)
复数如:4+3i,
Inf和-Inf 表示正无穷和负无穷
NaN(not a number):表示一个既不是实数也不是复数的值

①浮点型

浮点数: 浮点数即小数,matlab存储小数的类型有两种,分为单精度浮点数(single precision)和双精度浮点数(double precision),matlab缺省值为双精度浮点数。

双精度浮点数即double,占据64bit的存储空间
单精度浮点数为single,占据32bit的存储空间
双精度浮点数能精确更多的小数点
如下:
在这里插入图片描述
在这里插入图片描述

realmin('single') %单精度浮点数的最小值
realmax('single') %单精度浮点数的最大值
realmin('double') %双精度浮点数的最小值
realmax('double') %双精度浮点数的最大值

单精度和双精度浮点数的最小值与最大值分别为:
在这里插入图片描述
double型能取到的值是最大的,取到的变量也是最多的。

②整数型

整数integer: 整数(integer)分为带符号整数和不带符号整数,而它们两种又都包含有8位,16位,32位和64位这四种类型,分别占据8bit,16bit,32bit和64bit。

也就是说整数有:带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数、不带符号8位整数、不带符号16位整数、不带符号32位整数、不带符号64位整数。

带符号整数的取值范围从负数到正数都有,不带符号整数取值范围取不到负数

带符号整数用一个bit来存储正负号,剩下的bit用来存储数字。不带符号整数的bit全都用来存储数字。

如int8(9)的意思是:值是9,存储形式是int8(带符号8bit的形式)
uint8(9)的意思是:值是9,存储形式是uint8(不带符号8bit的形式)
由于int8用一个bit来存储符号了,所以其能存储的最大值为2^(8-1)-1,(因为中间还有个0所以要减去)。最小值为:-(2 ^(8-1))

也可以换一种理解思路:
int8是有符号八位存储,其存储的个数为2^8个。因为其有正负符号,所以负数的个数是2 ^8/2个,既不是正数也不是负数的0是一个,剩下的2 ^8/2-1个便是正数。所以所以其能存储的最大值为:2 ^8/ 2-1,最小值为:-2 ^8/ 2,共能存储2 ^8个。

uint8是无符号八位存储,其存储的个数为2^8个。因为其无正负符号之分,所以其没有负号。最小值是0,最大值便是2 ^8 -1,共2 ^8个。

剩下的int16、uint16,int32、uint32,int64、uint64等都是同样的道理,其最大和最小值均展示如下:
int8:
int8的取值范围
int16:
int16的取值范围
int32:
int32的取值范围
int64:
int64的取值范围
uint8:
在这里插入图片描述
uint16:
在这里插入图片描述
uint32:
在这里插入图片描述
uint64:
在这里插入图片描述
如果超出存储范围则输出的是存储范围的极限如:int8的存储范围是-128到127.无法存储-129和127.
在这里插入图片描述
四个带符号的整数和四个不带符号的整数(带符号8位整数、带符号16位整数、带符号32位整数、带符号64位整数、不带符号8位整数、不带符号16位整数、不带符号32位整数、不带符号64位整数)。涵盖了matlab整数存储的所有类型。
两种大类和八种详细分类如下:构成了整数的所有类别
在这里插入图片描述
再加上两类浮点型(双精度浮点型和单精度浮点型),即涵盖了matlab中实数的所有类别。如下:
在这里插入图片描述
有无符号整数分类和取值范围及其转换如下:
在这里插入图片描述
浮点数取值范围和转换函数如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③复数

matlab中*复数的调用函数为complex

x=3;
y=6;
z=complex(x,y)

如下:
在这里插入图片描述
复数也可以直接输入z=3+4i
(3与i之间不能有空格)

在这里插入图片描述
在这里插入图片描述
注:'表示的转制是共轭转置。也就是说实数的共轭转置可以将行向量变成列向量,这是因为在实数里,共轭转置和转置是没有区别的。如:
在这里插入图片描述

但是复数的转置不是这样,共轭转置会使其 行列变换,并且变成共轭:
在这里插入图片描述

那么在复数里的转置为.’
在这里插入图片描述

2、逻辑类型
Matlab中存储逻辑变量的类型有两种,为true和false,分别由1和0来表示。

函数logical()可以将任何非零的数值转化为true,将数值0转化为false

a=3;b=0;
c=logical(a)
d=logical(b)

在这里插入图片描述

也就是说只有数值为0时的逻辑值是false,为0
只要数值不为0时的逻辑值就是true,为1
如:
3<=5为true
在这里插入图片描述
3=3为true
在这里插入图片描述
3不等于3为false
在这里插入图片描述

符号运算符和逻辑运算符

常见符号运算符:

 a+b       %加
 a-b       %减
 a*b       %乘
 a\b或a/b  %-         %负
 a^b       %abs()     %绝对值
 =         %等于,表示赋值(将一个值赋给一个变量)
 e、E、D   %表示1*10^的几次方
 exp       %表示以e为底的指数函数

常见逻辑运算符:

==     %逻辑等于,变量值相同将会返回1,如果不同将返回0.
<      %小于   
>      %大于   
>=     %大于等于  
<=     %小于等于  
~=     %不等于
&&     %||     %~      %非     
xor    %异或  相异为1,否则出0  
xnor   %同或  相同为1,否则为0
nand   %与非  全10,否则为1     (先按与操作,然后结果取反)
nor    %或非  全01,否则为0      (先按或操作,然后结果取反)

注:a/b表示a ÷ b ,a\b 表示b÷ a
=是用来赋值的 如:a=b指的是把b的值赋给a
是用来对比的 如:a==b指的是判断a和b的值是否相等

在这里插入图片描述
在这里插入图片描述

短路运算

特别的,在执行或运算时,只需要有一个满足条件,后面的就不会再继续执行,其逻辑值就为1.
比如:在未定义a的情况下,执行逻辑上1=1或a小于3时,以下为两种情况:
1、 1==1 || a<3

由于 1= =1是成立的,因而或指令就不再执行后面的a<3,所以输出逻辑值为1
在这里插入图片描述
2、a<3 || 1==1
在这里插入图片描述
按照顺序依次执行,首先执行a<3,由于a未定义,所以输出结果便如上。

运算符的优先级

无论是符号运算符还是逻辑运算符都是有优先级的
优先级如下表:
在这里插入图片描述
此外逻辑运算输出的值只有两个,一个是1,一个是0。这就一些手写的数学运算无法正常使用。比如要表示:10>5>2时:
在这里插入图片描述
显示的是逻辑0,也就是false。这个式子为啥是false呢,原因就是逻辑运算输出的值只有两个,一个是1,一个是0。按照顺序首先执行10>5,为true,因而输出值为1,之后再执行第二段的逻辑运算便是1>2了。所以输出值变成了false为0.

因而要想表达10>5>2,应该为10>5 && 5>2
如下:
在这里插入图片描述

舍入误差

浮点数的运算经常设计到舍入误差如:
对于1*10几次方的运算有四种运算形式: E或e或D或^
如:

1E-10+1E0-1E0==1E-10
1e-10+1e0-1e0==1e-10
1D-10+1D0-1D0==1D-10
1*10^-10+1*10^0-1*10^0==1*10^-10

1E-10就是110^(-10)
e、E、D都代表1
10的几次方
同时运算该对比逻辑后,会发现其逻辑值为false为0.这是由于发生了舍入误差。如下:其逻辑为0
在这里插入图片描述
将他们分开来一步步计算的话便可以发现端倪,其中有微小的误差:
在这里插入图片描述
这些误差导致了其对比逻辑为0.因而一般不会用“==”来对比两个浮点数的大小。
经常用的是差的绝对值,再设一个阈值:
在这里插入图片描述

3、字符和字符串
matlab中存储字符变量的类型有两种,为字符和字符串
在Matlab中,数据类型char character)表示一个字符。一个char类型的1×n数组称为字符串str (string).
字符用单引号括出来,而字符串用双引号括出来

a=I Love Matlab
b='I Love Matlab'
c="I Love Matlab"

字符串没有单引号括出来
在这里插入图片描述
在这里插入图片描述
所有的字符型变量都对应着一个专门的代码,其转换方法如下:

double('a')     %将字符a转换为双精度浮点型代码
single('a')     %将字符a转换为单精度浮点型代码
int8('a')       %将字符a转换为8位有符号整数型代码
uint32('a')     %将字符a转换为32位无符号整数型代码
double('小狗勾') %将字符'小狗勾'转化为双精度
char(97)         %将实数97转化为字符型代码
char(543.4)      %将实数543.4转化为字符型代码
char([23567 29399 21246]) %将向量[23567 29399 21246]转化为字符型(char)代码
...
...
...

对于double(‘a’) 、single(‘a’) 、int8(‘a’) 、uint32(‘a’) 等等
不管是怎么样转换,其值都是一样的,字符‘a’所代表的代码就是97
在这里插入图片描述
字符a的代码为97 c为99
在这里插入图片描述
在这里插入图片描述

同样的这些代码也可转化为字符,如:
在这里插入图片描述
在这里插入图片描述
双精度实数与字符型的相互转化:
在这里插入图片描述
如果超出取值范围的话只能取到最大值或最小值。如下,将字符 ‘小狗勾’ 转化为实数为[23567 29399 21246].但这些数均超出了8bit整数型即int8的最大值127,因而其只能输出为最大值127.
在这里插入图片描述

ASCII为字符编码表,共有128个字符合集:

char(1:128)%查看ASCII中128个字符合集

其结果如下:(无法显示的是一些功能性符号)


    '	
     
      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€'

4、结构体类型
结构体类型其实就是混合型,它其中的组成部分可以是以上我们所讲的任意数据类型

关于matlab中结构体类型的讲解和构造方法以及代码可见MATLAB 数据类型中的结构体类型,及其构造方法

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华毓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值