表格适用于面向列的数据,如文本文件或电子表格中的表格数据。表格将数据列存储在变量中。表格中的变量可以具有不同的数据类型,尽管所有变量必须具有相同的行数。但是,表格变量不限于仅存储列向量。例如,一个表变量可以包含一个具有多列的矩阵,只要它的行数与其他表变量的行数相同。
在MATLAB®中,您可以通过几种方式创建表并将数据分配给它们。
属性从输入数组创建表表格
函数。
使用点表示法将变量添加到现有表中。
将变量赋给空表。
预分配一个表并在以后填充它的数据。
的方法将变量转换为表array2table
,cell2table
,或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 NaT0 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失踪
您可以将具有其他数据类型的变量转换为表。单元格数组和结构是其他类型的容器,可以存储具有不同数据类型的数组。因此,您可以将单元格数组和结构转换为表格。还可以将数组转换为表,其中表变量包含该数组的值列。要转换这些类型的变量,请使用array2table
,cell2table
,或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
.按照以下步骤将数据导入为表。
在进口数据部分中,选择表格作为输出类型。
点击进口的选择(接近右上角)。新的表,命名为中断
,显示在您的工作区中。
readtable
|表格
|array2table
|cell2table
|struct2table
|导入工具