主要内容

创建表,并将数据分配给他们

表适合用于数据如表格数据从文本文件或电子表格。表列数据存储在变量中。表中的变量可以具有不同的数据类型,尽管所有的变量都必须有相同的行数。然而,表变量不限于存储只列向量。例如,表变量可以包含多个列的矩阵,只要它有相同数量的行与其他表变量。

在MATLAB®,您可以创建表,并将数据分配给他们在几个方面。

  • 从输入数组通过创建一个表函数。

  • 通过使用点符号变量添加到一个现有的表。

  • 给变量分配一个空表。

  • Preallocate表并填写其数据。

  • 通过使用变量转换成表array2table,cell2table,或struct2table功能。

  • 从文件读取表使用readtable函数。

  • 导入表使用导入工具

你选择的方式取决于您的数据的性质和你计划如何在您的代码中使用表格。

从输入数组创建表

你可以从数组创建一个表使用函数。例如,创建一个小表5名患者的数据。

首先,创建六个用于数组的数据。这些数组有五行,因为有五个病人。这些数组(大多数5-by-1列向量,血压是一个5×2矩阵)。

LastName = [“桑切斯”;“约翰逊”;“张”;“Diaz”;“棕色”];年龄=[38,43岁,38;40;49);吸烟者=(真的,假的,真的,假的,真正的);身高= [71;69;64;67;64);重量= [176;163;131;133;119);血压= (124 93;109 77;125 83;117 75;122 80);

现在创建一个表,病人,作为一个容器的数据。在这个调用函数,输入参数使用工作空间变量名称的变量的名称病人

病人=表(LastName、年龄、抽烟,身高、体重、血压)
病人=5×6表LastName看上去年龄吸烟者身高体重血压_____ ___长得一样_________________“桑切斯”38真71 176 124 93“约翰逊”43假69 163 109 77张“38真64 131 125 83“Diaz”40假67 133 117 75“棕色”49真正的64 119 122 80

表是一个5-by-6表,因为它有六个变量。随着血压变量显示,表变量本身可以有多个列。这个例子展示了为什么表行和变量,而不是行和列。

使用点符号变量添加到表

一旦您创建了一个表,你可以在任何时候通过添加一个新的变量点符号。点符号表是指变量的名字,T.varname,在那里T表和varname是变量名。这个符号是类似于你使用的符号来访问和分配数据的字段结构。

例如,添加一个身体质量指数变量来病人。计算身体质量指数,简称BMI,使用的值patients.Weightpatients.Height。BMI值分配给一个新表变量。

病人。身体质量指数= (patients.Weight*0.453592)./(patients.Height*0.0254).^2
病人=5×7表LastName吸烟者年龄身高体重血压BMI看上去_____ ___长得一样_________________ ______“桑切斯”38真的43 71 176 124 93 24.547“约翰逊”假69 163 109 77 24.071 "张" 38真的40 64 131 125 83 22.486“Diaz”假67 133 117 75 20.831“棕色”49真正的64 119 122 80 20.426

为空表分配变量

创建一个表的另一种方法是首先一个空表变量并为其赋值。例如,重新创建表的病人数据,但这一次分配变量使用点符号。

首先,创建一个空表,patients2,通过调用没有参数。

patients2 =表
patients2 = 0 x0空表

接下来,创建一个副本分配病人数据的变量。表变量名称不匹配数组名称,如图所示的的名字英国石油公司表变量。

patients2。的名字= LastName; patients2.Age = Age; patients2.Smoker = Smoker; patients2.Height = Height; patients2.Weight = Weight; patients2.BP = BloodPressure
patients2 =5×6表名字看上去年龄吸烟者身高体重BP _____ ___长得一样__________”桑切斯38真71 176 124 93“约翰逊”43假69 163 109 77张“38真64 131 125 83“Diaz”40假67 133 117 75“棕色”49真正的64 119 122 80

Preallocate表并填充行

有时候你知道你想要的大小和数据类型的数据存储在一个表,但是以后你计划来分配数据。也许你计划一次添加几行。在这种情况下,preallocating空间的表,然后将值分配给空行可以更有效率。

例如,为一个表包含preallocate空间时间和温度在不同的电台,使用函数。而不是提供输入数组,指定表的大小和数据类型变量。给他们的名字,指定“VariableNames”论点。预先配置填充表变量默认值适合他们的数据类型。

深圳= 3 [4];varTypes = [“替身”,“datetime”,“字符串”];varNames = [“温度”,“时间”,“站”];临时工=表(“大小”、深圳、“VariableTypes”varTypes,“VariableNames”varNames)
临时工=4×3表温度时间站___________ ___ _____ NaT <失踪> 0 NaT <失踪> 0 NaT <失踪> 0 NaT <失踪>

分配的一种方法或一个表添加一个行是分配一个单元阵列行。如果单元阵列是一个行向量及其元素匹配各自变量的数据类型,然后赋值转换单元阵列表行。但是,你一次只能分配一行使用细胞阵列。赋值的前两行。

临时工(1)= {75 datetime (“现在”),“S1”};临时工(2)= {68 datetime (“现在”)+ 1,“S2”}
临时工=4×3表温度时间站___________ ____________________ _____ 75 01 - 9月- 2021年10:20:08 S1 68 02 - 9月- 2021年10:20:08“S2”NaT <失踪> 0 NaT <失踪>

作为一种替代方法,您可以指定从一个较小的表行成一个更大的表。使用此方法,您可以指定一个或多个行。

临时工(3:4:)=表((63;72),[datetime (“现在”)+ 2;datetime (“现在”)+ 3],[“S3”;“S4”])
临时工=4×3表温度时间站……____________________ 75 01 - 9月- 2021年10:20:08 S1 68 02 - 9月- 2021年10:20:08 S2 63 03 - 9 - 2021 10:20:08“S3”72年04 - 9月- 2021年10:20:08“S4”

您可以使用语法来增加一个表的大小通过分配表的行后。如果有必要,失踪的行与默认值填写。

:临时工(6日)= {62 datetime (“现在”)+ 6,“S6”}
临时工=6×3表温度时间站___________ ____________________ _____ 75 01 - 9月- 2021年10:20:08 S1 68 02 - 9月- 2021年10:20:08 S2 63 03 - 9 - 2021 10:20:08“S3”72年04 - 9月- 2021年10:20:08 S4“0 NaT <失踪> 62 07 - 9 - 2021 10:20:09“S6”

将变量转换成表

您可以转换变量,其他数据类型表。细胞数组和结构是其他类型的容器,可以存储不同的数据类型的数组。所以你可以将细胞数组和结构转换成表。您还可以将数组转换成一个表,表变量包含的列值的数组。将这些类型的变量,使用array2table,cell2table,或struct2table功能。

例如,通过使用数组转换为一个表array2table。数组没有列名,所以表默认变量名。

一个=兰迪(3)
一个=3×33 3 1 2 3 2 1 1 3
a2t = array2table (A)
a2t =3×3表A1 A2 A3 _ _ _ 3 3 1 2 3 2 1 1 3

您可以提供自己的表使用的变量名“VariableNames”名称-值参数。

a2t = array2table (,“VariableNames”,(“第一”,“第二”,“第三”])
a2t =3×3表第一第二第三专攻_____ 3 3 1 2 3 2 1 1 3

从文件读取表

通常有大量的表格数据在文件如CSV(逗号分隔值)文件或Excel®电子表格。阅读这些数据到表中,使用readtable函数。

例如,CSV文件outages.csv是一个示例文件,用MATLAB分布。文件包含数据的电力中断。的第一行outages.csv列名。文件的其他部分有逗号分隔每个故障的数据值。前几行所示。

地区,OutageTime、损失、客户、RestorationTime导致西南,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,冬季风暴东南部,2003-01-23 00:49,530.1399497,212035.3001,冬季风暴东南部,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,冬季风暴西方,2004-04-06 05:44,434.8053524,340371.0338,2004-04-06 06:10,设备故障中西部,2002-03-16 06:18,186.4367788,212754.055,2002-03-18 23:23,严重的风暴……

阅读outages.csv并将数据存储在一个表,可以使用readtable。它读取数值、日期和时间和字符串表变量有合适的数据类型。在这里,损失客户是数字数组。的OutageTimeRestorationTime变量是datetime数组,因为readtable识别文本的日期和时间格式的输入文件的列。阅读的文本数据转换为字符串数组,指定“TextType”名称-值参数。

中断= readtable (“outages.csv”,“TextType”,“字符串”)
中断=1468×6表地区OutageTime损失客户RestorationTime引起___________ ___________ ______ __________ ___________ _________________,“西南”2002-02-01 12:18 458.98 - 1.8202 e + 06 2002-02-01 16:50“暴风雪”“东南”2003-01-23 00:49 530.14 - 2.1204 e + 05 NaT“暴风雪”“东南”2003-02-07)21:15 289.4 - 1.4294 e + 05 2003-02-07 08:14“暴风雪”“西方”2004-04-06 05:44 434.81 - 3.4037 e + 05 2004-04-06 06:10“设备故障”“中西部”2002-03-16 06:18 186.44 - 2.1275 e + 05 2002-03-16 23:23“暴风”“西方”2003-06-18 02:49 0 0 2003-06-18 10:54“攻击”“西方”2004-06-20 39 231.29南2004-06-20 19:16“设备故障”“西方”2002-06-06 19:28 311.86南2002-06-06 00:51“设备故障”“东北”2003-07-16十六23 239.93 49434 2003-07-17 01:12“火”“中西部”2004-09-27 11:09 286.72 66104 2004-09-27 16:37“设备故障”“东南”2004-09-05 17:48 73.387 36073 2004-09-05 20:46“设备故障”“西方”2004-05-21 21:45 159.99南2004-05-21 04:23“设备故障”“东南”2002-09-01 95.917十八22 36759 2002-09-01 19:12“暴风”“东南”2003-09-27 07:32南3.5517 e + 05 2003-09-27 07:02“暴风”“西方”2003-11-12 06:12 254.09 - 9.2429 e + 05 2003-11-12 02:04“暴风雪”“东北”2004-09-18 05:54 0 0 NaT⋮“设备故障”

使用导入工具导入表

最后,您可以交互式地预览和导入的数据通过使用电子表格或分隔的文本文件导入工具。有两种方法可以打开导入工具

  • MATLAB将来发布:选项卡,变量部分中,点击导入数据

  • MATLAB命令提示:输入uiimport (文件名),在那里文件名是一个文本或电子表格文件的名称。

例如,打开outages.csv示例文件使用uiimport哪一个文件路径。

uiimport ((“outages.csv”))

导入工具显示了一个预览的6列outages.csv。导入数据表,遵循这些步骤。

  1. 进口数据部分中,选择作为输出类型。

  2. 点击进口的选择(右上角附近)。新表,命名中断,出现在您的工作区中。

另请参阅

|||||

相关的话题