概要

熟悉 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

containers matlab,Matlab 中实用数据结构之 containers.Map相关推荐

  1. matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...

    由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...

  2. Matlab GUI中的hObjecthandles

    Matlab GUI中的hObject与handles ①如果把figure对象当做一个大缸,把其它的对象如axes,button等当做这个大缸里的小缸,那么handles就相当于这个大缸的句柄,可以 ...

  3. D:MATLAB.N个实用技巧-MATLAB中文论坛精华总结

    在为此书作序的时候,MATLAB中文论坛的主题已经达到10万,帖子超过100万,有效会员30万.MATLAB的基础技巧已经在论坛里得到了充分的展示与探讨,大家常见的问题大部分获得了解答!是时候做一个小 ...

  4. 8. 修改matlab GUI中fig和m文件名修改流程及注意事项

    资料来源: 修改matlab GUI中fig和m文件名修改流程及注意事项 - CSDN博客 https://blog.csdn.net/xingkongfenqi/article/details/46 ...

  5. matlab二阶导数表示,【单选题】在MATLAB符号计算中,y的二阶导数表示为( )。...

    [单选题]在MATLAB符号计算中,y的二阶导数表示为( ). 更多相关问题 关于个性化的形成机制,以下理解正确的是(). 评述颜之推的家庭教育思想. 目前主要的移动服务平台有哪几类() 在一个简单的 ...

  6. matlab整定串级pid,PID算法在Matlab串级控制中的应用

    PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...

  7. Matlab R2016a中如何完美运行“mex-setup”

    接上一篇 "Matlab R2016a中运行'mex -setup',错误使用 mex 未找到支持的编译器或 SDK"的解决办法 上篇博文提到: (4)使用MATLAB将MW_MI ...

  8. “Matlab R2016a中运行‘mex -setup’,错误使用 mex 未找到支持的编译器或 SDK”的解决办法

    目录 问题描述: 原因分析: 解决方案: 1.失败经验 2.成功方法 (1)下载MinGW-w64 C/C++ 编译器 (2)安装MinGW-w64 C/C++ 编译器 (3)设置为系统环境变量 (4 ...

  9. MATLAB从入门到精通-Matlab R2020b中的新标记符号(New-marker-symbols)

    Matlab R2020b中的新标记符号(New-marker-symbols)! MatlabR2020B版本引入了新的水平("_")和垂直("|")线标记符 ...

  10. MATLAB语言中的关系与逻辑运算

    在执行关系及逻辑运算时,MATLAB将输入的不为零的数值都视为真(True)而为零的数值则视为否(False). 运算的输出值将判断为真者以 1 表示而判断为否者以 0 表示.各个运算元须用在二个大小 ...

最新文章

  1. ORACLE限制IP访问数据库
  2. java method_JAVA Method的解析
  3. 2015年Java 8强势开始
  4. 二分(三分)+快速幂
  5. Asterisk 1.4.42将成绝唱
  6. 编译过程中的链接地址对最终编译镜像文件的影响
  7. 变频器输出功率_100米的深井泵,如何接变频器,怎样控制
  8. 转:ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
  9. LAMP下http跳转到 https
  10. java闰年满五换行_CoreJava练习题
  11. cvCanny() 边缘检测
  12. 安装SQL Server 2000 出现挂起文件,需要重启该如何解决?
  13. Skype和LibFetion无法输入中文的解决方法
  14. cαr怎么发音_英文字母在线发音
  15. mybatis当传入数据类型为Int时并且值为0时,会判断为空字符串
  16. Element UI 自定义动态换肤(主题)
  17. c语言试题库之单选题
  18. [华为][Atlas]Ubuntu can‘t open file ‘/usr/lib/python3.7/py_compile.py解决办法总结
  19. 大数据平台日志存储分析系统解决方案
  20. OpenGL | 设置视口glViewport 裁剪glScissor 屏幕截图 glReadPixel

热门文章

  1. java打字小游戏_JAVA打字小游戏
  2. 厦门大学计算机科学夏令营过程,厦门大学信息学院计算机系夏令营学生见面会如期召开-厦门大学计算机科学系...
  3. python百度地图poi_百度地图的poi如何调用
  4. codeforce #401 div2 Alyona and Spreadsheet 思维题
  5. 【Unity3D日常开发】Unity3D中实现箭头指向目标点的效果
  6. 工厂不存在导致的采购订单无法修改报错处理
  7. 【支持升级官方最新版】西部数码主机代理系统模板源码IDC网站源码虚拟主机代理管理系统
  8. 计算机主板芯片组型号有哪些,如何鉴别主板芯片组型号
  9. Codeforces-697C Lorenzo Von Matterhorn
  10. api.php(260x260),Restful Api文档 -V3-教程