containers matlab,Matlab 中实用数据结构之 containers.Map

概要

熟悉 Python 的都知道字典 Dict 类型数据结构功能的强大,Matlab 中虽然有表结构,但是其列名必须是亦变量名类型的字符串,如果我想用数字开头的字符串作键值,其表结构就无能为力了。此时 containers.Map 就派上用场了。

初始化操作

containers.Map 初始化一般有两种方式。第一种是先声明一个 Map 对象,然后依次添加键值对,示例如下:

>> stocks = containers.Map; % 声明 Map 对象

>> stocks('000300.SH') = [100, 3000.0]; % 添加数据

>> stocks('000200.SH') = [200, 2000.0];

>> stocks('000100.SH') = [300, 2500.0];

>> stocks

stocks =

Map - 属性:

Count: 3

KeyType: char

ValueType: any

>> stocks.Count % 获取 stocks 中有几条记录

ans =

uint64

3

>> stocks('000300.SH') % 获取键 '000300.SH' 对应的值

ans =

100 3000

>> stocks.keys % 返回由所有键组成的元组

ans =

1×3 cell 数组

{'000100.SH'} {'000200.SH'} {'000300.SH'}

>> stocks.values % 返回由所有键值组成的元组

ans =

1×3 cell 数组

{1×2 double} {1×2 double} {1×2 double}

Map 的值几乎可以是 Matlab 中的任意类型,实际操作中可以多做尝试。特别值得一提的是,其值还可以是 Map 类型的对象,即 Map 数据类型是支持嵌套的。

第二种初始化方式是由键构成的元组,和对应数量的值直接构成 Map 数据类型,示例如下:

>> stocks = containers.Map({'000300.SH', '000200.SH', '000100.SH'}, {[100, 3000.0], [200, 2000.0], [300, 2500.0]})

stocks =

Map - 属性:

Count: 3

KeyType: char

ValueType: any

>> stocks.keys

ans =

1×3 cell 数组

{'000100.SH'} {'000200.SH'} {'000300.SH'}

>> stocks.values

ans =

1×3 cell 数组

{1×2 double} {1×2 double} {1×3 double}

如果值只是简单的标量数值,那么也可以用中括号表示的数组表示。

常用方法操作

假设我们已经有了上述初始化的 Map 数据类型 stocks。

对 stocks 添加数据,直接像第一种初始化方式一样添加键值就行了。

对 stocks 删减数据,使用 remove 方法,例如:

>> stocks.remove('000100.SH')

ans =

Map - 属性:

Count: 2

KeyType: char

ValueType: any

由三条记录变成了两条。

对 stocks 修改键值,直接重新赋值就行,示例如下:

>> stocks('000300.SH')

ans =

100 3000 0

>> stocks('000300.SH') = 400; % 对 '000300.SH' 的值进行修改

>> stocks('000300.SH')

ans =

400

另外一个常用的方法是 isKey,来判断某个字符串是 Map 数据类型中的键,如果是返回逻辑值 1, 否则返回 0. 示例如下

>> stocks.isKey('000300.SH')

ans =

logical

1

>> stocks.isKey('555555.SH')

ans =

logical

0

总结

containers.Map 是 Matlab 中一种非常高效且灵活的数据结构,在很多场景下大大增加了程序的可读性。有必要时就多多使用起来吧。

标签:Map,double,SH,Matlab,ans,stocks,000300,containers

来源: https://www.cnblogs.com/zhoukui/p/10800121.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值