MATLAB学习笔记(四)数据类型 中

MAP容器

键值对

Map类的属性

属性 说明 默认值
Count 键值对的数量 0
KeyType 一个字符串,标示键的类型 char
ValueType 字符串,标示值的类型 any

调用方法 加“.”如

mapObject.KeyType

Map类函数

函数 说明
isKey 检查是否包含制定键
keys 所有键名称
length Map类的长度
remove 在Map中删除对应的值
size Map类的尺寸
values Map类中所包含的值

Map类的创建

Map对象是一个Map类中的对象,由容器(containers)来定义,创建Map必须指定包的名字containers

空Map-对象创建
>> newMap = containers.Map()

newMap = 

  Map - 属性:

        Count: 0
      KeyType: char
    ValueType: any
初始化以后Map对象创建
>> k = {'Jan' 'Feb' 'Mar' 'Apr' 'May' 'Jun' 'Jul' 'Aug' 'Sep' 'Oct' 'Nov' 'Dec'}

k =

  1×12 cell 数组

    {'Jan'}    {'Feb'}    {'Mar'}    {'Apr'}    {'May'}    {'Jun'}    {'Jul'}    {'Aug'}    {'Sep'}    {'Oct'}    {'Nov'}    {'Dec'}

>> v = {1 2 3 4 5 6 7 8 9 10 11 12}

v =

  1×12 cell 数组

    {[1]}    {[2]}    {[3]}    {[4]}    {[5]}    {[6]}    {[7]}    {[8]}    {[9]}    {[10]}    {[11]}    {[12]}

>> monthMap = containers.Map(k,v)

monthMap = 

  Map - 属性:

        Count: 12
      KeyType: char
    ValueType: double

Map对象读取

>> monthMap('Jan')

ans =

     1
>> values(monthMap,{'Jan','Feb'})

ans =

  1×2 cell 数组

    {[1]}    {[2]}

不能使用冒号

Map类的合并

通过[m1;m2]合并

>> tMap1 = containers.Map({'2R213'},{'HHH'});


>> tMap2 = containers.Map({'321JI'},{'LLL'});


>> nmap = [tMap1;tMap2]

nmap = 

  Map - 属性:

        Count: 2
      KeyType: char
    ValueType: char

注:如果有相同键指向不同值,靠后者为结果

Map键值修改

删除键值对

remove(‘mapName’,‘keyname’)

修改值

ticket(‘keyname’) = newval

nmap('2R213') = '1234'

nmap = 

  Map - 属性:

        Count: 2
      KeyType: char
    ValueType: char
修改键

删除以前的键
remove(mapname,key)
添加新键
mapname(key) = value;

副本Map对象

:因为ticketMap是一个句柄对象,所谓句柄对象就像C语言中的指针,当他被复制的时候仅仅传地址,修改副本对原数据一样有效果。
副本创建:
copy = map

映射其他数据类型

映射到结构数组
  1. 定义结构数组s1-sn的具体数值
  2. 通过Map创建函数将键值对连接
映射到元胞数组

同上

日期和时间

MATLAB从2014b版本就开始将日期和时间作为一种数据类型。

创建日期和时间数组

存储日期和时间数组主流是用datatime数组,代数运算结果通过during数组返回
以下是提供的函数

函数 说明
datatime 基于当前时间创建数组,或者将日期字符串转换为时间数组
years 年数长度
days 天数长度
hours 小时数长度
calyears 日历念书长度
calqurats 日历季节数
calmonth 日历月数长度
yyyymmdd 将datatime个数转换为yyyymmdd数值格式
minutes 分钟数长度
seconds 秒数长度
duration 由数值创建duration数组
calweeks 日历周天数
caldays 日历天数长度
calendarDuration 由数值创建日历时间长度数组

修改格式

t.Format = ‘MM dd,yy’

duration 数组

d = t2 - t

durtation 数组的格式

d.Format = ‘h’

duration 数组的创建

使用caldays,calweeks,calquarters,calyears函数直接创建一个单位的calendar duration 数值,并可以进行加减法运算

>> D = calmonths(2) + caldays(3)

D = 

  calendarDuration

   2mo 3d

:一个datetime数组加减duration数组还是datetime数组

时间序列的产生

用’:'来规定,默认步长是一个day
常用结构:

>> t1 = datetime()

t1 = 

  datetime

   2019-04-03 21:53:55

>> t2 = t1 + calmonths(1:5)

t2 = 

  1×5 datetime 数组

1 至 4 列

   2019-05-03 21:53:55   2019-06-03 21:53:55   2019-07-03 21:53:55   2019-08-03 21:53:55

5 列

   2019-09-03 21:53:55

使用diff(t)来查看步长
>> diff(t2)

ans = 

  1×4 duration 数组

   744:00:00   720:00:00   744:00:00   744:00:00
使用caldiff(t,‘format’)来查看步长
>> dt = caldiff(t2,'d')

dt = 

  1×4 calendarDuration 数组

   31d   30d   31d   31d
用between(t1.t2)函数寻找时间差
>> between(t2(1),t2(2))

ans = 

  calendarDuration

   1mo

通过时间画图

>> t = datetime() + caldays(1:10)

t = 

  1×10 datetime 数组

1 至 4 列

   2019-04-04 22:13:53   2019-04-05 22:13:53   2019-04-06 22:13:53   2019-04-07 22:13:53

5 至 8 列

   2019-04-08 22:13:53   2019-04-09 22:13:53   2019-04-10 22:13:53   2019-04-11 22:13:53

9 至 10 列

   2019-04-12 22:13:53   2019-04-13 22:13:53

>> y = rand(2,10)

y =

    0.8147    0.1270    0.6324    0.2785    0.9575    0.1576    0.9572    0.8003    0.4218    0.7922
    0.9058    0.9134    0.0975    0.5469    0.9649    0.9706    0.4854    0.1419    0.9157    0.9595
>> plot(t,y)

MATLAB学习笔记(四)数据类型 中

控制plot参数

对横坐标参数进行规定,为秒
plot(Tyler,‘DurationTickFormat’,‘s’)

不同的时间度量

除了datetime还有三种不同的时间单位

  1. Date String
  2. Date Vector
  3. Serial Date Number
datetime和其他制式互相转换