概要

 

熟悉 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 中一种非常高效且灵活的数据结构,在很多场景下大大增加了程序的可读性。有必要时就多多使用起来吧。

最新文章

  1. TCP/IP是一种十一状态
  2. CodeForces 716B Complete the Word
  3. Python 内置彩蛋
  4. [bzoj2245][SDOI2011]工作安排(费用流)
  5. SharePoint 2013 配置我的网站 图文引导
  6. AppSetting ,connectionStrings配置节
  7. VBA
  8. OC:继承、初始化方法、便利构造器
  9. 【Timers】win服务 定时器
  10. SSH框架整合面试题
  11. Qt串口通信接收数据不完整的解决方法(传输图片)
  12. mvc5 HTML Helper
  13. 学习笔记之#pragma
  14. 单元测试工具 SmokeTest
  15. 工具使用——MATLAB基本调试方法
  16. spring data jpa 组合条件查询封装
  17. Spring常用工具方法备忘录
  18. iconfont阿里巴巴矢量图标库批量保存
  19. 清除li内a标签的float=left实现a标签在li内居中显示(ul内li不居中显示)
  20. Docker部署MySQL容器

热门文章

  1. css3旋转立方体-_-
  2. POJ 2891 Strange Way to Express Integers excrt/我真傻,真的
  3. 15-----jQuery补充
  4. postgis 赋予postgresql空间数据库的能力
  5. Babelfish (关于map<string,string>的用法
  6. vim配置成c++IDE
  7. Java 内存模型(零)
  8. 提高PHP编程效率的20个要点
  9. 北航oo作业第三单元小结
  10. java数据结构和算法07(2-3-4树)