matlab笔记1--数据类型

本文是MATLAB基础知识--数据类型的总结笔记


1.数值类型

整数类型:

声明方式:name(num)   name是类型种类,分为有符号x位整数int8、int16、int32、int64,无符号x位整数uint8、uint16、uint32、uint64。

范围:有符号范围(-2^(x-1), 2^(x-1)-1),无符号范围(0, 2^x-1)。

转换

整数可以转换成整数,可以使用typecast(例子:typecast(uint16(511),'uint8'))注意后面的单引号

其他数据类型也可以转换为整数,有以下取整函数

函数 运算法则 实例
floor(x) 向下取整

floor(1.2)=1

floor(-2.5)=-3

ceil(x) 向上取整

ceil(1.2)=2

ceil(-2.5)=-2

round(x)

取最接近的.整数

如果小数部分是0.5,则向绝对值

大的地方取整

round(1.2)=1

round(2.5)=3

round(-2.5)=-2

fix(x) 向0取整

fix(1.2)=1

fix(2.5)=2

round(-2.5)=-2

浮点数类型

声明方式:name(num)   分为single单精度  double双精度(在MATLAB中,单精度浮点类型不能和整型运算 && double无需声明)

范围

单精度32位宽,0~22小数,23~30指数,31符号(0正1负)   

双精度64位宽,0~51小数,52~62指数,63符号

浮点数使用的函数:eps(n) 表示和n相邻最近的下一个浮点数之间距离是多少,这也说明了浮点数是离散的

复数

是一种直接用函数建立的数据类型

创建复数:z=complex(a,b)

返回复数实部:real(z)

返回复数虚部:imag(z)

返回复数模:abs(z)

返回复数辐角:angle(z)

返回复数的共轭:conj(z)

无穷量(Inf)和非数值量(NaN)

Inf:运算结果溢出得到了超出浮点数精度范围的数

NaN:由非正常运算得到(如0/0,Inf/Inf),两个NaN互不相等

非数:超出了运算范围的数,实部为NaN,虚部为Inf


2.逻辑类型

关系操作符:<  <=  >  >=  ==  ~=

作用:比较同样大小的数组,或者比较一个数组和一个标量,此时是标量和数组中每一个数比较,结果长度和数组长度一致(如0 0 1 0 0 1 0)

逻辑运算符

A B A  &  B(与运算) A  |  B(或运算) xor(A,B)(亦或运算)
0 0 0 0 0
1 0 0 1 1
0 1 0 1 1
1 1 1 1 0
~  非运算

any(x)     判断是否为零向量或者零矩阵,是则返回1

另有众多测量特殊值条件是否存在的函数,见书P24


3.字符和字符串

特点

1.屏幕显示出来的是文本,非ASCII数字

(用whos指令检查变量的1.矩阵规模(size)2.所占空间(bytes)3.类型(class))

2.直接和数字相加结果为每个字符对应编码和相加数字之和

3.size(string)会得到ans=a b 分别为行列

4. 中括号连接两个字符串(w = [u v])

5.单引号用‘’打在句子里

6.冒号的作用是类似计数器(String(10:-1:7)意思是从第十个倒着输出到第七个)


4.函数句柄

调用函数,重复使用

如f=@sin      f(x)就是求sin(x)


5.结构体类型

相当于数据容器,把多个相关联的不同类型数据封装在一个结构体对象中

创建:

直接创建:用“.”直接创建即可,如student.name=...  student.class=...,就自动存储到结构体里面

struct创建:array=struct(‘name’,value,‘name2’,value2,......)

注意:当value是数组时,在所有value长度相同时,array(n)表示取各自第几个value


6.数组类型

数组的定义是广义的,可以是任意的数据类型,如数字,字符,指针等

数组,即阵列,强调元素对元素的运算

创建:

array=[1 2 3 4 5 6]

array= i : k   或   array= i : j : k (j为步长,i为起点,k为终点,而且冒号前后的数必须是实数标量)

array=linspace(a, b, 100) 表示a~b建立100个元素的向量,这些向量把整个区间线性分割


7.单元数组类型(cell)

广义矩阵,每一个元素都可以是一个任意数组(数值数组,结构体数组,字符串数组 ...)甚至是另一个单元数组,因此每一个单元数组都有不同的内存空间,这样的好处是可以把不同类型的数据归并到一个数组中。

创建:

赋值语句创建:分号分行,逗号或者空格分列 如c={‘x’,[1;5;6]   ; 10,pi} 是两行两列的单元数组

cell函数创建:cellname = cell(a,b)创建一个a*b的空单元数组,每一个单元都是空矩阵

寻访:

在单元数组中,单元和单元中的内容是两种东西

第m行n列的单元名:c(m,n)

第m行n列的单元内容:c{m,n}

操作:

合并:c = {a  b}  直接把a,b两个单元数组作为c这个单元数组的内容

删除:c = {m  n} = [ ]  想删除哪个,直接赋给空值即可

变形:newc = reshape(c, 1, 4)  相当于把原来的c从四行一列变成一行四列


8.map容器类型

概述:

相当于一种映射,将一个key映射成一个value

key称为键,可以是1*N字符串,单双精度实数标量,整数

一个map是一个对象,map有三种属性,Count表示储存key的个数,KeyType表示key类型,ValueType表示value的类型

创建:

mapname = containers.Map({key1, key2, ...}   ,   {value1, value2, ...}) 当键和值是字符串时需要加单引号

查看/读取:

keys(mapname) 得到所有key的名称

values(mapname)得到所有value的名称

course = mapname(KeyName)  可以读取对应key的value

values(mapname, {'keyname1' , 'keyname2' , ...})  可以读取两个及以上对应key的value

编辑:

删除key/value对:remove('mapname' , 'keyname')

添加key/value对:mapname(newkeyname) = 'newvalue'  注意key的名字一定要是新的

修改key:只能做到删除后添加

修改value:mapname(keyname) = 'newvalue'  注意key是已经拥有的键




你可能感兴趣的:(matlab笔记1--数据类型)