Matlab数据类型

 

一、数值类型
 
1、实数
 
Matlab的数值类型分为三种,整形,单精度浮点型和双精度浮点型,具体的情况如下。
 
 
有几个地方需要注意一下:
 
  • 系统默认的数值类型是double的,所以使用double时可以省略double符号
  • double类型的数值与其他类型的数值运算时,结果为其他类型的数值,single类型的数值不能和整型直接运算,各种不同位数的整形之间也不能直接运算。

    因为系统默认的数据类型是双精度浮点,所以在将变量设置为整数时需要进行转换,matlab提供了如下的转化函数。

函数
运算法则
例子
floor
向下取整
floor(1.4)=1;floor(3.5)=3;floor(-3.5)=-4
ceil
向上取整
ceil(1.4)=2;ceil(3.5)=3;ceil(-3.5)=-3
round
取最接近的整数,如果小数部分是0.5,则向绝对值大的方向取整
round(1.4)=1;round(3.5)=4;round(-3.5)=-4
fix
向0取整
fix(1.4)=1;fix(3.5)=3;fix(-3.5)=-3
2、复数
 
复数由实部和虚部两部分构成,在Matlab中,字符i或j默认作为虚部标志,关于复数的相关函数如下:
 
函数
说明
函数
说明
complex(a,b)
构造以a为实部,以b为虚部的复数
i,j
虚部标识
real(z)
返回复数z的实部
image(z)
返回复数z的虚部
abs(z)
返回复数z的模
angle(z)
返回复数z的辅角
conj(z)
返回复数z的共轭复数
 
 
3、无穷量(Inf)和非数值量(NaN)
 
Matlab中使用Inf和-Inf分别表示正无穷大和负无穷大,NaN表示非数值量。正负无穷大一般是由于运算溢出产生,非数值量则是由于类似0/0或Inf/Inf类型的非正常运算产生。
 
二、字符与字符串
 
Matlab将文本作为特征字符串或简单地当做字符串,但是实际存储的是字符串的ASCII码。abs函数可以获得字符串的具体值,使用方法如下:
 
>> a='abc'
 
a =
 
abc
 
>> abs(a)
 
ans =
 
    97    98    99
三、结构
 
Matlab中也存在与C语言类似的结构这种类型,一个结构可以通过字段存储多个不同类型的数据。结构中的各个字段可以是不同的类型。
 
1、创建结构对象
 
有两种创建结构的方法,一种是逐一输入一个结构的各个属性,例如下面创建stu1的过程;另一种是使用struct函数,例如创建stu2的过程。
 
>> stu1.name='xing';
>> stu1.sno='123';
>> stu1
 
stu1 =
 
    name: 'xing'
     sno: '123'
 
>> stu2=struct('name','sno','xiao','234')
 
stu2 =
 
    name: 'sno'
    xiao: '234'
2、访问结构对象
 
使用结构名.属性名的方式可以获取结构的属性。
 
 
ans =
 
xing
3、连接结构对象
 
两个结构可以连接起来,但是要连接的这个两个结构的对应属性的类型应该相同。
 
>> stu1.name='xing';
>> stu1.sno=int16(123);
>> stu2.name='xiao';
>> stu2.sno=int16(456);
>> stu=[stu1,stu2]
 
stu =
 
1x2 struct array with fields:
 
    name
    sno
 
>> stu(1)
 
ans =
 
    name: 'xing'
     sno: 123
四、单元数组
 
单元数组是一种广义矩阵。每一个单元可以包括一个任意数组,如数值数组、
字符数组、结构体数组或另外一个单元数组,因而每一个单元可以具有不同的尺寸和内存。
1、创建单元数组
 
有两种创建单元数组的方法:通过赋值语句或cell函数创建。
 
(a)使用赋值语句创建单元数组:单元数组使用花括号”{} ”来创建,使用“,”或空格来分隔单元,使用“;”来分行。
 
>> A={'x',[2;3;6];10,2*pi}
 
A =
 
    'x'     [3x1 double]
    [10]    [    6.2832]
(b)使用cell函数创建空单元数组
 
>> B=cell(2,2)
 
B =
 
    []    []
    []    []
2、访问单元数组
 
在单元数组中,单元和单元中的内容属于不同范畴,这意味着访问单元和访问单元中的内容是两个不同的操作。对于单元数组C,C(m,n)指的是单元数组中第m行第n列的单元,而C{m,n}则是指的是第m行第n列的单元中的内容。
 
>> A(1,1)
 
ans =
 
    'x'
 
>> A(1,2)
 
ans =
 
    [3x1 double]
 
>> A{1,2}
 
ans =
 
     2
     3
     6
3、单元数组的合并
 
>> C={'a','b';'c','d'}
 
C =
 
    'a'    'b'
    'c'    'd'
 
>> D={'1','2'}
 
D =
 
    '1'    '2'
 
>> E={A;B}
 
E =
 
    {2x2 cell}
    {2x2 cell}
 
>> E{1,1}
 
ans =
 
    'x'     [3x1 double]
    [10]    [    6.2832
五、映射容器
 
Matlab中的映射容器就是Map类,这里的Map类与java的Map类类似,也是一个key对应着一个value,Map类的所有对象都有三个属性:
 
  • Count:表示Map中存储的键值对的数量
  • KeyType:表示Map对象中包括的key的类型
  • ValueType:表示Map中的数据类型
1、创建Map对象
 
>> mapObj=containers.Map({1,2},{'xing','xiao'})
 
mapObj =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
2、查看和读取Map对象
 
可以通过使用keys函数查看Map对象中包含的所有键;通过values函数查看所有的值。
 
%获取所有的键
>> keys(mapObj)
 
ans =
 
    [1]    [2]
 
%获取所有的值
>> values(mapObj)
 
ans =
 
    'xing'    'xiao'
 
%获取指定键的值
>> mapObj(1)
 
ans =
 
xing
 
%获取多个值
>> values(mapObj,{1,2})
 
ans =
 
    'xing'    'xiao'
3、编辑Map对象
 
(1)添加键值对
 
>> mapObj(3)='ming'
 
mapObj =
 
  Map with properties:
 
        Count: 3
      KeyType: double
    ValueType: char
 
>> values(mapObj)
 
ans =
 
    'xing'    'xiao'    'ming'
(2)删除键值对
 
>> remove(mapObj,2)
 
ans =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
 
>> values(mapObj)
 
ans =
 
    'xing'    'ming'
(3)修改键值对
 
如果需要在值不变的情况下对键名进行修改,首先要删除键名和对应的值,然后再添加一个有正确键名的新条目。通过覆盖原有的值,可以在键名不变的情况下对值进行修改。
 
>> remove(mapObj,1)
 
ans =
 
  Map with properties:
 
        Count: 1
      KeyType: double
    ValueType: char
 
>> mapObj(11)='xing'
 
mapObj =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
 
>> mapObj(3)='aaa'
 
mapObj =
 
  Map with properties:
 
        Count: 2
      KeyType: double
    ValueType: char
 
>> keys(mapObj)
 
ans =
 
    [3]    [11]
 
>> values(mapObj)
 
ans =
 
    'aaa'    'xing'
 
六、数据类型之间的转换
 
类型识别函数:
 
函数
功能
函数
功能
iscell
判断是否为单元数组
isnumeric
判断是否为数值数组
isreal
判断是否为实数
ischar
判断是否为字符数组
isstr
判断是否为字符串
isfloat
判断是否为浮点数
isstruct
判断是否为结构数组
whos
列举变量类型及相关数据
类型转换函数:
 

函数
功能
函数
功能
dec2bin
十进制转为二进制
int2str
整数转为字符串
num2str
数值转为字符串
str2double
字符串转为double
原文地址:https://www.cnblogs.com/jwg-fendi/p/10052898.html