matlab如何创建table,MATLAB table数据结构 首篇

>第2.5节,构造函数和类的名称相同)。在containers.Map的介绍中,我们举了电话号码簿的例子,如表Table.3所示,它是我们这节要构造的table对象的原始数据

Table.3 电话号码簿姓名

电话号码

Abby

5086470001

Bob

5086470002

Charlie

5086470003

下面程序中第1,2行用元胞数组来表示表中每一列的数据,第3行规定了表头的名称,第4行调用table的构造函数创建table对象,先输入数据,再输入表头的名称。表头通过table对象的VariableNames属性来设置。

name={'Abby';'Bob';'Charlie'}; % 3x1列向量

number={'5086470001';'5086470002';'5086470003'}; % 3x1列向量

colName={'Name','Number'};

phonetable=table(name,number,'VariableNames',colName)

命令行显示如下

% phonetable在命令行中disp的结果

phonetable =

Name Number

_________ ____________

'Abby' '5086470001'

'Bob' '5086470002'

'Charlie' '5086470003'

第4行把Name和Number做为table对象的VariableNames,可以这样理解VariableNames,我们可以把table看成由一个个列数据组成的数据结构,每列都是矢量,其中存放相同类型的数据。如果一个table有两列,它就有两个列矢量,每个列矢量都是table的一个变量(Variable),给变量名字就是Variable Name。

通过转换函数构造table对象

除了使用table的构造函数来创建table对象,还可以使用转换函数把其它数据类型转成table,下列通过数组数据类型类构造table。下面的程序的1-2行,我们利用financial工具箱中的fetch函数,从Yahoo财经处得到雅虎从3月1日到3月10日的股票价格,fetch函数将返回一个数组,第3行我们利用array2table转换函数把得到数组转成table。

% 通过array2table创建table对象

conn = yahoo;

array = fetch(conn,'YHOO','3/1/2015','3/10/2015');

yhoo = array2table(array,...

'VariableNames', {'date','open','high','low','closing','volumn','adjusted'})

第4行中,我们通过VariableName来指定表头的内容,结果显示如下

% yhoo的table在命令行的显示

yhoo =

date open high low closing volumn adjusted

__________ _____ _____ _____ _______ __________ ________

7.3603e+05 42.57 42.92 42.18 42.68 1.0601e+07 42.68

7.3603e+05 43.6 43.93 42.67 42.98 1.1802e+07 42.98

7.3603e+05 43.98 44.24 43.4 43.44 1.1888e+07 43.44

7.3603e+05 44.18 44.31 43.5 44.16 1.1868e+07 44.16

7.3603e+05 42.08 44.38 41.97 43.99 3.0099e+07 43.99

7.3603e+05 43.7 43.95 42.42 42.62 2.2392e+07 42.62

7.3603e+05 44.06 44.43 43.7 44.11 1.1027e+07 44.11

访问table中的数据

通过表Table.1所建立的table对象,在命令行中显示如下:

% nasdaq table在命令行中的显示

nasdaq =

Symbol Name MarketCap IPOYear

______ _______________________ __________ _______

'AAPL' 'Apple Inc' '$742.63B' 1980

'AMZN' 'Amazon.com Inc' '$173.33B' 1997

'MSFT' 'Microsoft Corporation' '$346.9B' 1986

我们可以通过使用dot+Variablename的语法直接访问table中的列,返回的结果是cell格式的数据:

% 使用dot语法访问table中的数据

>> nasdaq.Symbol % dot格式+变量名的访问方式

ans =

'AAPL'

'AMZN'

'MSFT'

>> class(nasdaq) % 返回cell格式的数据

ans =

cell

table类重载了subsref函数(什么是运算符的重载,参加《MATLAB面向对象编程-从入门到设计模式》12.1节),于是支持MATLAB传统的圆括号下标访问,如果要访问第一行,则:

% 使用下标语法访问table中的数据

>> nasdaq(1,:)

ans =

Symbol Name MarketCap IPOYear

______ ___________ __________ _______

'AAPL' 'Apple Inc' '$742.63B' 1980

使用圆括号,返回的结果仍然是table,如果要访问第2到3行,则:

% 使用下标语法访问table中的数据

>> nasdaq(2:3,:)

ans =

Symbol Name MarketCap IPOYear

______ _______________________ __________ _______

'AMZN' 'Amazon.com Inc' '$173.33B' 1997

'MSFT' 'Microsoft Corporation' '$346.9B' 1986

返回的结果仍然是table。

table数据结构支持MATLAB传统的花括号下标访问,返回的结果是cell格式的数据

% 花括号下标访问

>> nasdaq{:,1} % 花括号下标访问,返回第一列中的数据

ans =

'AAPL'

'AMZN'

'MSFT'

还可以把Dot语法和下标语法结合起来获取数据,下例代码访问table第一列的第三行,返回的结果是元胞。

% Dot语法和圆括号下标访问结合

>> nasdaq.Symbol(3)

ans =

'MSFT'

>> class(ans) % 圆括号下标访问,返回结果是元胞

ans =

cell

图Figure.1中以表Table.1中的数据为例,总结了几种访问table中不同区域的数据的方法。

Figure.1 访问table中的数据

33e2de927d579b48dce8c421e74b76fb.png

关于作者

oopmatlab,计算物理博士,计算机硕士,声明:

本文内容所有内容仅代表个人观点,如有任何问题,请联系作者。

本版块所有文章版权归作者个人所有,未经允许,不得作为出版物出版。如需转载,请联系论坛管理员。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值