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
映射其他数据类型
映射到结构数组
- 定义结构数组s1-sn的具体数值
- 通过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)
控制plot参数
对横坐标参数进行规定,为秒
plot(Tyler,‘DurationTickFormat’,‘s’)
不同的时间度量
除了datetime还有三种不同的时间单位
- Date String
- Date Vector
- Serial Date Number
datetime和其他制式互相转换
略