版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、table-matlab-中 table 数据类型-创建-调用-访问MATLAB table 数据结构目录:关于作者 table 简介o 为什么需要 table 数据结构o 通过导入数据构造 table 对象o 调用 table 构造函数来构造 table 对象o 通过转换函数构造 table 对象 访问 table 中的数据MATLAB 常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和 结构体数组。除了这些基本数据类型,MATLAB 还有很多其它的数据类型不为人熟悉,这些数据类型在编程中也非常有用。MATLAB 高级数据类型系列旨在向大 家介绍它们:比如 containers.
2、Map, tables,enumeration 和 time series 等等,它们为什么有用,用来解决什么问题,并且怎样在科学工程计算中怎么使 用。上篇我们提到了映射表结构(containers.Map )。本篇将介绍另一中新的 MATLAB 数据类型-table。table 简介为什么需要 table 数据结构MathWorks 在 MATLAB R2013b 中引入了一种新的数据结构叫做table 。table 类似统计 工具箱中的,其引入的目的就是用来取代dataset的数据dataset类型。因为表状的数据在工程计算中越来越长久,有了 类型,MATLAB 用户就可以不用购table
3、买统计工具箱,也能使用表状的数据结构了。本质上来说是一种可以存放各种数据类型的table容器,比如下面表 Table.1 中的数据,其中既有字符型,又有数值类型,其中第一行作为表头:Symbol,Name,Market,Cap,IPO, Year 是各列的名字。Table.1NASDAQ 股票名称表NameMarket IPOCap YearSymbolAAPL Apple Inc $742.63B 1980AMZNA,Inc$173.33B 1997MSFTMicrosoftCorporation$346.9B 1986在 conatiners.Map 的章节中,我们介绍了 MATLAB 的
4、基本数据类型(比如数组,原胞数组和结构体)在表达某些复杂数据类型时的局限性。这里不再一一赘述, 读者只需要认识到:数组的局限性在于不能用来存放数值以外的数据,而使用 元胞读取和索引内容时有种种不方便,比如无法区分该数据中的表头和其余的行数据。事实上,如果数据存放在如下的 CSV 文件中,并且用 importdata 直接 读取表 Table.2 中的 CSV 文件。Symbol,Name,Market Cap,IPO YearAAPL,Apple Inc,$742.63B,1980AMZN,A Inc,$173.33B,1997MSFT,Microsoft Corporation,$346.9
5、B,1986Table.2 Nasdaq 的 csv 原始数据读入之后数据将会被分成数值和非数值部分:1. % 用 importdata 直接读入 CSV 文件2. nasdaq = importdata(nasdaq.csv)3. nasdaq = % 结果存在 struct 中4. data: 3x1 double5. textdata: 4x4 cell6. nasdaq.data % csv 中的数值部分7. ans =8. 19809. 199710. 198611. nasdaq.textdata % csv 中的字符部分12. ans =13. Symbol Name Marke
6、t CapIPO Year14. AAPL Apple Inc $742.63B15. AMZN A Inc $173.33B16. MSFT Microsoft Corporation $346.9B显然这不是我们所期待的要导入格式。通过导入数据构造 table 对象沿用表 Table.2 中 nasdaq.csv 文件,我们可以使用readtable 函数,构造一个新的 table 对象,把 csv 文件中的数据导入到该对象中。readtable 函数接受文件名称作为输入,返回一个 table 对象。1. % 通过 readtable 函数来构造 table 对象2. nasdaq = r
7、eadtable(nasdaq.csv)3. Warning: Variable names were modified to make them valid MATLABidentifiers.4. nasdaq =5. Symbol Name MarketCapIPOYear6. _ _ _7. AAPL Apple Inc $742.63B 19808. AMZN A Inc $173.33B 19979. MSFT Microsoft Corporation $346.9B 1986注意第 2 行的 warning,因为readtable 函数把nasdaq.csv 中的第一行自动变成
8、了这个 table的表头,在创建 table 对象的时候,MATLAB 会对做表头的文字做处理,这里把 Market Cap 和IPO Year 两个词中的空格去掉,缩成一个词,这样做是为了方便将来使用 dot 语法来访问表中的数据。因为 MATLAB 修改了原来的表头,所以这里给出了 warning。调用 table 构造函数来构造 table 对象我们还可以通过直接调用 table 类的构造函数来创建 table 对象 (什么是类的构造函数见参加第 2.5 节,构造函数和类的名称相同)。在containers.Map 的介绍中,我们举了电话号码簿的例子,如表 Table.3 所示,它是我们
9、这节要构造的table 对象的原始数据Table.3 电话号码簿姓名电话号码Abby 5086470001Bob 5086470002Charlie 5086470003下面程序中第 1,2 行用元胞数组来表示表中每一列的数据,第 3 行规定了表头的名称,第 4 行调用 table 的构造函数创建 table 对象,先输入数据,再输入表头的名称。表头通过 table 对象的 VariableNames 属性来设置。1. name=Abby;Bob;Charlie; % 3x1 列向量2. number=5086470001;5086470002;5086470003; % 3x1 列 向量3.
10、 colName=Name,Number;4. phonetable=table(name,number,VariableNames,colName)命令行显示如下1. % phonetable 在命令行中 disp 的结果2. phonetable =3. Name Number4. _ _5.6. Abby 5086470001 7. Bob 50864700028. Charlie 5086470003第 4 行把 Name 和 Number 做为 table 对象的 VariableNames,可以这样理解VariableNames,我们可以把 table 看成由一个个列数据组成的数据
11、结构,每列 都是矢量,其中存放相同类型的数据。如果一个 table 有两列,它就有两个列矢量,每个列矢量都是 table 的一个变量(Variable),给变量名字就是 VariableName。通过转换函数构造 table 对象除了使用 table 的构造函数来创建 table 对象,还可以使用转换函数把其它数据类型转成table,下列通过数组数据类型类构造 table。下面的程序的 1-2 行,我们利用 financial 工具箱中的 fetch 函数,从 Yahoo 财经处得到雅虎从3 月 1 日到 3 月 10 日的股票价格,fetch 函数将返回一个数组,第 3 行我们利用 arra
12、y2table 转换函数把得到数组转成 table。1. % 通过 array2table 创建 table 对象2. conn = yahoo;3. array = fetch(conn,YHOO,3/1/2015,3/10/2015);4. yhoo = array2table(array,.5. VariableNames,date,open,high,low,closing,volumn,adjusted)第 4 行中,我们通过 VariableName 来指定表头的内容,结果显示如下1. % yhoo 的 table 在命令行的显示2. yhoo =3. date open high
13、 low closingvolumn adjusted4. _ _ _ _ _ _5. 7.3603e+05 42.57 42.92 42.18 42.68 1.0601e+07 42.686. 7.3603e+05 43.6 43.93 42.67 42.981.1802e+07 42.987. 7.3603e+05 43.98 44.24 43.4 43.44 1.1888e+07 43.448. 7.3603e+05 44.18 44.31 43.5 44.161.1868e+07 44.169. 7.3603e+05 42.08 44.38 41.97 43.993.0099e+07
14、43.9910. 7.3603e+05 43.7 43.95 42.42 42.622.2392e+07 42.6211. 7.3603e+05 44.06 44.43 43.7 44.11 1.1027e+07 44.11访问 table 中的数据通过表 Table.1 所建立的 table 对象,在命令行中显示如下:1. % nasdaq table 在命令行中的显示2. nasdaq =3. Symbol Name MarketCapIPOYear4. _ _ _5.6. AAPL Apple Inc $742.63B 19807. AMZN A Inc $173.33B 19978.
15、MSFT Microsoft Corporation $346.9B 1986我们可以通过使用 dot+Variablename 的语法直接访问 table 中的列,返回的结果是 cell 格式的数据:1. % 使用 dot 语法访问 table 中的数据2. nasdaq.Symbol % dot 格式+变量名的访问方式3. ans =4. AAPL5. AMZN 6. MSFT7. class(nasdaq) % 返回 cell 格式的数据8. ans =9. celltable 类重载了 subsref 函数(什么是运算符的重载,参加MATLAB 面向对象编程-从入门到设计模式12.1
16、节),于是支持 MATLAB 传统的圆括号下标访问,如果要访问第一行,则:1. 使用下标语法访问 table 中的数据2. nasdaq(1,:)3. ans =4. Symbol Name MarketCap IPOYear5. _ _ _ _6.7. AAPL Apple Inc $742.63B 1980使用圆括号,返回的结果仍然是 table,如果要访问第 2 到 3 行,则:1. % 使用下标语法访问 table 中的数据2. nasdaq(2:3,:)3. ans =4. Symbol Name MarketCapIPOYear5. _ _ _6.7. AMZN A Inc $173.33B 19978. MSFT Microsoft Corporation $346.9B 1986返回的结果仍然是 table。table 数据结构支持 MATLAB 传统的花括号下标访问,返回的结果是 cell 格式的数据1. % 花括号下标访问2. nasdaq:,1 % 花括号下标访问,返回第一列中的数据3. an
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB1309T 333-2025 黄骅旱碱麦原粮
- DB1306T 291-2025 计量校准机构服务规范
- 古代书画真伪辨识技术-洞察与解读
- 2025年故障排除工程师招聘面试题库及参考答案
- 低延迟票务网络-洞察与解读
- 2025年创新顾问岗位招聘面试参考题库及参考答案
- 2025年职业安全健康专家岗位招聘面试参考试题及参考答案
- 2025年文化活动专员岗位招聘面试参考试题及参考答案
- 2025年文化产业投资顾问岗位招聘面试参考题库及参考答案
- 2025年广告专员岗位招聘面试参考题库及参考答案
- 小区地下管道安装施工方案
- 专项纪检监察培训课件
- 2025年及未来5年中国建筑安装行业市场前景预测及投资方向研究报告
- 幼儿园晨间活动目标及实施细则
- 2025年房地产买卖居间合同协议
- 铁路护路安全知识教育
- 外研版初三英语下册教案
- 2025年环境影响评价工程师《环境影响评价案例》真题及答案
- 2025北京海淀初一上学期期中数学试卷和答案
- 2025广东汕尾汇能综合能源服务有限公司招聘13人(第二批次)笔试考试备考题库及答案解析
- 老年人运动的健康宣教
评论
0/150
提交评论