zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Maven学习
    Oracle_SQL函数-单行函数
    Java 8新特性-5 内建函数式接口
    量子优势
    配置Emeditor编译运行JAVA,附私家珍藏版
    配置Emeditor编译运行JAVA,附私家珍藏版
    Notepad2-mod,轻量级文本编辑器、代替记事本的最佳选择
    三星S7短信不能提示的处理方法
    三星S7短信不能提示的处理方法
    说说宾得机身的十大人性化设定和功能[转]
  • 原文地址:https://www.cnblogs.com/jwg-fendi/p/10052898.html
Copyright © 2011-2022 走看看