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 中一种非常高效且灵活的数据结构,在很多场景下大大增加了程序的可读性。有必要时就多多使用起来吧。
Matlab 中实用数据结构之 containers.Map的更多相关文章
- matlab中的数据结构
一.cell 1. function: num2cell(A,n) n表示如何把A中的数据转换为cell. n=1表示把每列的所有行转换为cell:n=2表示把每行的所有列转换为cell. >& ...
- matlab中的containers.Map()
matlab中的containers.Map() 标签: matlabcontainers.Map容器map 2015-10-27 12:45 1517人阅读 评论(1) 收藏 举报 分类: Mat ...
- go中的数据结构字典-map
1. map的使用 golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值. 类型表示:map[keyType][valueType] key一定 ...
- Matlab中矩阵的数据结构
在Matlab中,矩阵默认的数据类型是double, 并不是integer. 而且奇怪的是,矩阵乘法默认按照浮点数类型进行, 整数矩阵相乘会报错.另外,可以用a= int16(A)这种形式实现数据类型 ...
- go中的数据结构-字典map
1. map的使用 golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值. 类型表示:map[keyType][valueType] key一定 ...
- Python 中的数据结构总结(一)
Python 中的数据结构 “数据结构”这个词大家肯定都不陌生,高级程序语言有两个核心,一个是算法,另一个就是数据结构.不管是c语言系列中的数组.链表.树和图,还是java中的各种map,随便抽出一个 ...
- $ 一步一步学Matlab(3)——Matlab中的数据类型
小学时候我们就知道,数学中有自然数.整数.分数.小数等等很多种类型的数.到了中学,我们又发现了其实还有无理数.复数这些有些特殊的数.到了大学学了高等数学之后,我们又知道了其实还存在着无穷大.无穷小这样 ...
- paper 121 :matlab中imresize函数
转自:http://www.cnblogs.com/rong86/p/3558344.html matlab中函数imresize简介: 函数功能:该函数用于对图像做缩放处理. 调用格式: B = i ...
- java中的数据结构(集合|容器)
对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...
随机推荐
- 洛谷P3102 [USACO14FEB]秘密代码Secret Code
P3102 [USACO14FEB]秘密代码Secret Code 题目描述 Farmer John has secret message that he wants to hide from his ...
- HTML常用标签与CSS基础知识
一.HTML页面结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
- ios开发 xcode6以上安装Alcatraz管理插件
在终端上输入如下命令即可完成安装: curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | ...
- SMTP服务器配置
Windows Server 2012/2012 R2:安装和配置 SMTP 服务器 安装 SMTP 服务器 以下是安装 SMTP 服务器功能的步骤: 1. 打开“服务器管理器”:单击键盘上的 Win ...
- nagios部署配置流程
nagios部署配置流程 nagios服务端:1.部署nagios服务端(参考nagios官方部署文档).nagios-plugin.php.apache2 2.需要在服务端添/etc/hosts中添 ...
- Java面向对象_常用类库api——日期操作类
Data类 类Data表示特定的瞬间,精确到毫秒,也就是程序运行时的当前时间 Data data=new Data();//实例化Data对象,表示当前时间 Calendar类 日历类,使用此类可以将 ...
- Linux Shell命令系列(1)
1. ls命令ls命令是列出目录内容(List Directory Contents)的意思.运行它就是列出文件夹里的内容,可能是文件也可能是文件夹.“ls -l”命令以详情模式(long listi ...
- vim配置成c++IDE
mv ~/.vimrc ~/.vimrcbak mv ~/.vim ~/.vimbak git clone https://github.com/handy1989/vim.git mv vim/.v ...
- Java实例学习——企业进销存管理系统(3)
Java实例学习--企业进销存管理系统(3) (本实例为书上实例,我所记录的是我的学习过程) 开始时间:2月12日 完成时间:暂未完成 2月16日-公共类(Item公共类,数据模型公共类,Dao公共类 ...
- Unity C# 反射
什么是反射 在.NET中的反射也可以实现从对象的外部来了解对象(或程序集)内部结构的功能,哪怕你不知道这个对象(或程序集)是个什么东西,另外.NET中的反射还可以运态创建出对象并执行它其中的方法. 反 ...