主要内容

创建表并为其分配数据

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

在MATLAB®中,您可以通过几种方式创建表并将数据分配给它们。

  • 属性从输入数组创建表表格函数。

  • 使用点表示法将变量添加到现有表中。

  • 将变量赋给空表。

  • 预分配一个表并在以后填充它的数据。

  • 的方法将变量转换为表array2tablecell2table,或struct2table功能。

  • 使用readtable函数。

  • 属性导入表导入工具

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

从输入数组中创建表

属性从数组创建表表格函数。例如,创建一个小表,其中包含五名患者的数据。

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

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

现在创建一个表,患者,作为数据的容器。在这次电话会议上表格函数时,输入参数使用工作区变量名作为其中变量名患者

患者=表格(姓氏、年龄、吸烟者、身高、体重、血压)
病人=5×6表姓氏年龄吸烟者身高体重血压____________ ____________ ______ _____________ "Sanchez" 38真71 176 124 93 "Johnson" 43假69 163 109 77 "Zhang" 38真64 131 125 83 "Diaz" 40假67 133 117 75 "Brown" 49真64 119 122 80

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

用点符号添加变量到表中

创建表后,可以随时使用添加新变量点符号.点表示法指的是表变量的名字,T.varname,在那里T是桌子和varname是变量名。这种表示法类似于用于访问数据并将数据分配给结构字段的表示法。

例如,添加a身体质量指数变量来患者.计算身体质量指数,或BMI,使用的值病人。重量病人。高度.将BMI值分配给新表变量。

病人。身体质量指数= (patients.Weight*0.453592)./(patients.Height*0.0254).^2
病人=5×7表姓氏年龄吸烟者身高体重血压BMI(体重指数)(体重指数)(体重指数)(体重指数)(体重指数)(体重指数)(体重指数)(体重指数)(体重指数

将变量赋给空表

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

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

patients2=表格
patis2 = 0x0空表

接下来,通过分配变量来创建患者数据的副本。表变量名不必匹配数组名,如的名字英国石油公司表变量。

patients2。的名字= LastName; patients2.Age = Age; patients2.Smoker = Smoker; patients2.Height = Height; patients2.Weight = Weight; patients2.BP = BloodPressure
病人2=5×6表姓名年龄吸烟者身高体重BP _________ _________ ______ ______ __________ "Sanchez" 38真71 176 124 93 "Johnson" 43假69 163 109 77 "Zhang" 38真64 131 125 83 "Diaz" 40假67 133 117 75 "Brown" 49真64 119 122 80

预分配表和填充行

有时,您知道要存储在表中的数据的大小和数据类型,但您计划稍后分配数据。也许您计划一次只添加几行。在这种情况下,preallocating在表中使用空格,然后将值分配给空行可能更有效。

例如,要为表预分配空间,以包含不同工位的时间和温度读数,可以使用表格函数。指定表变量的大小和数据类型,而不是提供输入数组。要给它们命名,请指定“VariableNames”论点。预分配使用适合于表变量的数据类型的默认值填充表变量。

Sz = [4 3];varTypes = [“双倍”“datetime”“字符串”];varNames = [“温度”“时间”“站”];临时工=表(“大小”、深圳、“可变类型”varTypes,“VariableNames”varNames)
临时工=4×3表温度时间站___________ ____ _________ 0 NaT  0 NaT  0 NaT  0 NaT 

将行分配或添加到表中的一种方法是将单元格数组分配给行。如果单元格数组是行向量,且其元素与其各自变量的数据类型匹配,则分配会将单元格数组转换为表行。但是,使用单元格数组一次只能分配一行。请将值分配给前两行。

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

或者,您可以将较小表中的行分配到较大表中。使用此方法,您可以一次分配一行或多行。

temps(3:4,:)=表([63;72],[datetime(“现在”) + 2; datetime (“现在”)+3],[“S3”“S4”])
临时工=4×3表温度时间站2021年9月1日10:20:08“S1”682021年9月2日10:20:08“S2”6303-09-2021 10:20:08“S3”7204-09-2021 10:20:08“S4”

您可以使用这两种语法通过分配表末尾以外的行来增加表的大小。如果有必要,将用默认值填充缺失的行。

temps(6,:)={62,日期时间(“现在”) + 6,“S6”
临时工=6×3表温度时间站2021年9月1日10:20:08“S1”2021年9月68日10:20:08“S2”2021年9月63日10:20:08“S3”2021年9月72日10:20:08“S4”2021年9月20日10:09失踪

将变量转换为表

您可以将具有其他数据类型的变量转换为表。单元格数组和结构是其他类型的容器,可以存储具有不同数据类型的数组。因此,您可以将单元格数组和结构转换为表格。还可以将数组转换为表,其中表变量包含该数组的值列。要转换这些类型的变量,请使用array2tablecell2table,或struct2table功能。

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

一个=兰迪(3)
一个=3×33 3 1 3 2 2 1 1 1 3
a2t = array2table (A)
a2t=3×3表A1 a2 a3 __ __ __ 3 3 1 3 2 2 1 1 3

您可以使用“VariableNames”名称值参数。

a2t = array2table (,“VariableNames”,[“第一”“第二”“第三”])
a2t=3×3表第一第二第三_____ ______ _____ 3 3 1 3 2 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美国中西部,2002-03-16 06:18 186.4367788,212754.055,2002-03-18 23:23,严重风暴…

阅读outages.csv并将数据存储在表中,就可以使用了readtable.它将数值、日期和时间以及字符串读入具有适当数据类型的表变量中。在这里,损失客户是数字数组。的离场时间RestorationTime变量是日期时间数组因为readtable识别输入文件中这些列中文本的日期和时间格式。若要将其余文本数据读入字符串数组,请指定“TextType”名称值参数。

中断= readtable (“outages.csv”“TextType”“字符串”
中断=1468×6表地区OutageTime RestorationTime造成损失客户  ___________ ________________ ______ __________ ________________ _________________ " 西南“2002-02-01 12:18 458.98 - 1.8202 e + 06 2002-02-07 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"winter storm" "West" 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 "equipment fault" "MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm" "West" 2003-06-18 02:49 00 2003-06-18 10:54 "attack" "West" 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 "equipment fault" "West" 2002-06-06 19:282004-09-16 16:23 239.93 49434 2004-09-17 01:12 "fire" "MidWest" 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 "设备故障" "West" 2004-05-21 21:45 159.99 NaN 2004-05-22 04:23 "设备故障" "东南" 2004-09-01 18:22 95.917 36759发布时间:2011-09-01 19:12“强风暴”“东南”2003-09-27 07:32“强风暴”“西”2003-11-12 06:12 9.2429e+05 2003-09-01 02:04“冬季风暴”“东北”2004-09-18 05:54 00 NaT“设备故障”⋮

使用导入工具导入表格

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

  • MATLAB工具条:关于首页选项卡,在变量部分中,点击导入数据

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

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

uiimport((“outages.csv”))

导入工具显示的六列的预览outages.csv.按照以下步骤将数据导入为表。

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

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

另请参阅

|||||

相关话题