【MATLAB】关于matlab的table数据使用 您所在的位置:网站首页 matlab向量加减 【MATLAB】关于matlab的table数据使用

【MATLAB】关于matlab的table数据使用

2023-12-10 21:17| 来源: 网络整理| 查看: 265

前言

上一次的训练中一道数据处理的题目,五千来号数据,作为matlab新手这怎么搞,后面发现可以导入,但是问题来了,我根本提取不出那些数据啊(苦恼)。后面发现这些数据从excel导入进去后是table类型的,然后去找了相关资料,终于有点会使了,于是记录整理一下,下次忘了还可以再看看,嘻嘻~

table简介

MATLAB引入了这个新的数据类型,为的就是更好的用来做统计,就可以理解成一个表(类似统计 工具箱中的dataset),可以存放各种类型的容器。第一行就作为表头,如果取的表头符合matlab的命名规则,那么该列直接如此命名。

数据导入 1.通过导入数据构造table对象

我们可以使用readtable 函数,构造一个新的table对象,把csv文件中的数据导入到该对象中。readtable函数接受文件名称作为输入,返回一个table对象。

% 通过readtable函数来构造table对象 >> nasdaq = readtable('xxxx.csv') Warning: Variable names were modified to make them valid MATLAB identifiers. nasdaq = Symbol Name MarketCap IPOYear ______ _______________________ __________ _______ 'AAPL' 'Apple Inc' '$742.63B' 1980 'AMZN' 'Amazon.com Inc' '$173.33B' 1997 'MSFT' 'Microsoft Corporation' '$346.9B' 1986

ps:warning 的原因是该列表把第一行作为了表头,缩了空格,修改了表头

调用table构造函数来构造table对象

我们还可以通过直接调用table类的构造函数来创建table对象。 上栗子

下面程序中第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) 通过转换函数构造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'}) 访问table中的数据

理解这个的最好方式就是栗子:

通过表Table.1所建立的table对象,在命令行中显示如下: (以访问这个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

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

% 使用dot语法访问table中的数据 >> nasdaq.Symbol % dot格式+变量名的访问方式 ans = 'AAPL' 'AMZN' 'MSFT' >> class(nasdaq) % 返回cell格式的数据 ans = cell %table类重载了subsref函数,于是支持MATLAB传统的圆括号下标访问,如果要访问第一行,则: % 使用下标语法访问table中的数据 >> nasdaq(1,:) ans = Symbol Name MarketCap IPOYear ______ ___________ __________ _______ 'AAPL' 'Apple Inc' '$742.63B' 1980

2.使用圆括号,返回的结果仍然是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。 3.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中的数据

在这里插入图片描述

参考网址:https://www.ilovematlab.cn/article-52-1.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有