概要

 

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

Matlab 中实用数据结构之 containers.Map的更多相关文章

  1. matlab中的数据结构

    一.cell 1. function: num2cell(A,n) n表示如何把A中的数据转换为cell. n=1表示把每列的所有行转换为cell:n=2表示把每行的所有列转换为cell. >& ...

  2. matlab中的containers.Map()

    matlab中的containers.Map() 标签: matlabcontainers.Map容器map 2015-10-27 12:45 1517人阅读 评论(1) 收藏 举报  分类: Mat ...

  3. go中的数据结构字典-map

    1. map的使用 golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值. 类型表示:map[keyType][valueType] key一定 ...

  4. Matlab中矩阵的数据结构

    在Matlab中,矩阵默认的数据类型是double, 并不是integer. 而且奇怪的是,矩阵乘法默认按照浮点数类型进行, 整数矩阵相乘会报错.另外,可以用a= int16(A)这种形式实现数据类型 ...

  5. go中的数据结构-字典map

    1. map的使用 golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值. 类型表示:map[keyType][valueType] key一定 ...

  6. Python 中的数据结构总结(一)

    Python 中的数据结构 “数据结构”这个词大家肯定都不陌生,高级程序语言有两个核心,一个是算法,另一个就是数据结构.不管是c语言系列中的数组.链表.树和图,还是java中的各种map,随便抽出一个 ...

  7. $ 一步一步学Matlab(3)——Matlab中的数据类型

    小学时候我们就知道,数学中有自然数.整数.分数.小数等等很多种类型的数.到了中学,我们又发现了其实还有无理数.复数这些有些特殊的数.到了大学学了高等数学之后,我们又知道了其实还存在着无穷大.无穷小这样 ...

  8. paper 121 :matlab中imresize函数

    转自:http://www.cnblogs.com/rong86/p/3558344.html matlab中函数imresize简介: 函数功能:该函数用于对图像做缩放处理. 调用格式: B = i ...

  9. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

随机推荐

  1. 解读人:刘佳维,Spectral Clustering Improves Label-Free Quantification of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的无标记定量)

    发表时间:(2019年4月) IF:3.95 单位: 维也纳医科大学: 欧洲生物信息研究所(EMBL-EBI): 分子病理学研究所: 奥地利科学院分子生物技术研究所: Gregor Mendel分子植 ...

  2. HQuorumPeer和QuorumPeerMain进程的区别

    HBase是列式数据库,既可以单机也可以集群的方式搭建,以集群的方式搭建一般建立在HDFS之上. 分布式HBase启动说明:首先启动hadoop,然后问题就来了:zookeeper和hbase的启动顺 ...

  3. File类、递归

    File类.递归 1.1File类概述 java.io.File表示文件和目录路径名的抽象类.可以对文件和文件夹进行创建删除.获取.判断.遍历等功能. 1.2路径\文件分割符,相对路径绝度路径 1.2 ...

  4. mathjax;latex

    \lfloor $\lfloor$ \rfloor $\rfloor$ \sum_{i=1}^{n} $\sum_{i=1}^{n}$ \mu $\mu$ \mid $\mid$ \Leftright ...

  5. 软件测试的生命周期&测试流程

    一.软件的生命周期 二.软件生命周期的阶段 三.软件模型 四.软件测试的基本流程 五.软件开发流程.测试流程梳理 六.C/S与B/S架构 七.对软件测试行业的理解 八.常见笔试面试题 一.软件的生命周 ...

  6. 统计分析: 跨库多表join

    mysql中如果多个库在一个实例上, 可以进行多表的跨库Join, 但是如果后期数据库分隔到不同的实例机器上,有查询问题 mysql的查询优化器没有其他商业数据库做的好, 用来CRUD还行, 但是做大 ...

  7. Telerik RadPropertyGrid 设置显隐 Combox选择

    Telerik RadPropertyGrid 的排序按钮.搜索框和描述面板的显隐只要设置SortAndGroupButtons.SearchBox.DescriptionPanel的属性值改为Vis ...

  8. C# 枚举类型 enum (一)

    1.枚举使用enum关键字来声明,与类同级.枚举可以和类并列也可以 写在类里面,不能写在方法里. 2.枚举是值类型,隐式继承自System.Enum,不能手动修改. System.Enum本身是引用类 ...

  9. 牛客网Java刷题知识点之构造函数是什么、一般函数和构造函数什么区别呢、构造函数的重载、构造函数的内存图解

    不多说,直接上干货! 构造函数是什么? 构建创造对象时调用的函数. 构造函数是一种特殊的函数,用来在对象实例化时初始化对象的成员变量. 注意: 创建对象都必须要通过构造函数初始化. 构造函数的特点   ...

  10. 常见的SQL错误和解决方法

    前言 今天你会看到每个人——从新手到专家——在使用SQL时犯的各种常见错误.你不能永远避免犯任何错误,但是熟悉广泛的错误将帮助你在尽可能短的时间内解决这些错误. 注:在我们的例子中我们使用的是Orac ...