目录
writetimetable函数的功能是将时间表写入文件。
语法
writetimetable(TT)
writetimetable(TT,filename)
writetimetable(___,Name,Value)
说明
writetimetable(TT) 将时间表 TT 写入以逗号分隔的文本文件。文件名为时间表的工作区变量名称,附加扩展名 .txt。如果 writetimetable 无法根据输入时间表名称构造文件名,那么它会写入 timetable.txt 文件中。
TT 中每个变量的每一列都将成为输出文件中的列。TT 的变量名称将成为文件第一行的列标题。writetimetable 函数会覆盖任何现有文件。
writetimetable(TT,filename) 写入具有 filename 指定的名称和扩展名的文件。
writetimetable 根据指定扩展名确定文件格式。扩展名必须是下列格式之一:
-
.txt、.dat 或 .csv(适用于带分隔符的文本文件)
-
.xls、.xlsm 或 .xlsx(适用于 Excel® 电子表格文件)
-
.xlsb(适用于安装了 Windows® Excel 的系统上支持的 Excel 电子表格文件)
-
.xml(适用于可扩展标记语言 (XML) 文件)。
writetimetable(___,Name,Value) 在包括上述语法中任意输入参数的同时,还可通过一个或多个 Name,Value 对组参数指定其他选项。
例如,可以指定是否将变量名称写入为输出文件中的列标题。
示例
将时间表写入文本文件
创建一个时间表,将其写入以逗号分隔的文本文件,然后用不同分隔符将该时间表写入另一个文本文件。
在工作区中使用行时间持续时间向量 RowTimes 定义一个时间表。
RowTimes = seconds(1:5)';
TT = timetable(RowTimes,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
'VariableNames',{'Reading1','Reading2'})
TT=5×2 timetable
RowTimes Reading1 Reading2
________ ________ ________
1 sec 98 120
2 sec 97.5 111
3 sec 97.9 119
4 sec 98.1 117
5 sec 97.9 116
将该时间表写入以逗号分隔的文本文件,并显示文件内容。writetimetable 函数将输出名为 TT.txt 的文本文件。
writetimetable(TT)
type 'TT.txt'
RowTimes,Reading1,Reading2
1 sec,98,120
2 sec,97.5,111
3 sec,97.9,119
4 sec,98.1,117
5 sec,97.9,116
要用不同分隔符将同一时间表写入文本文件,请使用 'Delimiter' 名称-值对组。
writetimetable(TT,'TT_bar.txt','Delimiter','bar')
type 'TT_bar.txt'
RowTimes|Reading1|Reading2
1 sec|98|120
2 sec|97.5|111
3 sec|97.9|119
4 sec|98.1|117
5 sec|97.9|116
将时间表写入电子表格文件
创建一个时间表,将其写入电子表格文件,然后显示文件内容。
在工作区中定义一个时间表,使用行时间作为 datetime 向量。
Y = [2014:2018]'; M = ones(5,1); D = ones(5,1);
RowTimes = datetime(Y,M,D); % Create Row Times
TT = timetable(RowTimes,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
'VariableNames',{'Reading1','Reading2'})
TT=5×2 timetable
RowTimes Reading1 Reading2
___________ ________ ________
01-Jan-2014 98 120
01-Jan-2015 97.5 111
01-Jan-2016 97.9 119
01-Jan-2017 98.1 117
01-Jan-2018 97.9 116
将该表写入电子表格文件 'TT.xlsx'。默认情况下,writetimetable 函数会写入文件中的第一个工作表。使用 'Sheet' 名称-值对组指定要写入到的工作表。
writetimetable(TT,'TT.xlsx','Sheet',2)
读取并显示文件内容。
readtimetable('TT.xlsx','Sheet',2)
ans=5×2 timetable
RowTimes Reading1 Reading2
____________________ ________ ________
01-Jan-2014 00:00:00 98 120
01-Jan-2015 00:00:00 97.5 111
01-Jan-2016 00:00:00 97.9 119
01-Jan-2017 00:00:00 98.1 117
01-Jan-2018 00:00:00 97.9 116
局限性
-
要将 'PreserveFormat' 名称-值对组设置为 true,必须将 'UseExcel' 名称-值对组设置为 true。
算法
有些情况下,writetimetable 函数创建的文件不能准确表示输入数据。
当使用 readtimetable 函数来读取该文件时,就会注意到这一点。生成的数据可能不具备与原始数据完全相同的格式或内容。如果需要原样保存时间表并在以后检索它,以便能与具有相同数据和组织形式的原始时间表精确匹配,则可将其另存为 MAT 文件。在以下情况下,writetimetable 输出的表数据不够精确:
-
writetimetable 使用 long g 格式输出数值数据,并将分类数据或字符数据输出为不带引号的文本。
-
writetimetable 将具有两个维度以上的变量输出为二维变量,并折叠尾部维度。
-
对于元胞值变量,writetimetable 根据元胞内容的数据类型以不同方式输出变量。
-
如果单元格的内容是数值、文本、逻辑值、分类、日期时间或持续时间等数据类型,则 writetimetable 函数会将内容输出到以分隔符分隔的多个字段中,一个元胞一行。
-
否则,writetimetable 函数会输出一个空字段。
-