MATLAB中writetimetable函数用法

目录

语法

说明

示例

将时间表写入文本文件

将时间表写入电子表格文件


        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 函数会输出一个空字段。

猜你喜欢

转载自blog.csdn.net/jk_101/article/details/126107685