在Matlab上读取逗号分隔的文本文件

在Matlab上读取逗号分隔的文本文件,matlab,text,comma,Matlab,Text,Comma,我试图读取一个逗号分隔的文本文件,如下所示: 2017-10-24,01:17:38,2017-10-24,02:17:38,+1.76,L,Meters 2017-10-24,02:57:31,2017-10-24,03:57:31,+1.92,H,Meters 2017-10-24,05:53:35,2017-10-24,06:53:35,+1.00,L,Meters 2017-10-24,10:45:01,2017-10-24,11:45:01,+2.06,H,Meters 2017-10

我试图读取一个逗号分隔的文本文件,如下所示:

2017-10-24,01:17:38,2017-10-24,02:17:38,+1.76,L,Meters
2017-10-24,02:57:31,2017-10-24,03:57:31,+1.92,H,Meters
2017-10-24,05:53:35,2017-10-24,06:53:35,+1.00,L,Meters
2017-10-24,10:45:01,2017-10-24,11:45:01,+2.06,H,Meters
2017-10-24,13:27:16,2017-10-24,14:27:16,+1.78,L,Meters
2017-10-24,15:07:16,2017-10-24,16:07:16,+1.92,H,Meters
2017-10-24,18:12:08,2017-10-24,19:12:08,+0.98,L,Meters
到目前为止,我的代码是:

LT_data = fopen('D:\Beach Erosion and Recovery\Bournemouth\Bournemouth Tidal Data\tidal_data_jtide.txt');% text file containing predicted low tide times

LT_celldata = textscan(LT_data,'%D %D %D %D %d ','delimiter',',')'

这是完美的工作。formatspec需要编辑

file = 'D:\Beach Erosion and Recovery\Bournemouth\Bournemouth Tidal Data\tidal_data_jtide.txt'
fileID = fopen(file);
LT_celldata = textscan(fileID,'%D%D%D%D%d%[^\n\r]','delimiter',',')

这是完美的工作。formatspec需要编辑

file = 'D:\Beach Erosion and Recovery\Bournemouth\Bournemouth Tidal Data\tidal_data_jtide.txt'
fileID = fopen(file);
LT_celldata = textscan(fileID,'%D%D%D%D%d%[^\n\r]','delimiter',',')

对于混合数据类型,我建议使用
readtable
。这将直接将数据读入
对象,而无需指定格式规范或使用
fopen

t = readtable( 'myFile.txt', 'ReadVariableNames', false, 'Delimiter', ',' );
然后您可以轻松地操作数据

% Variable names in the table
t.Properties.VariableNames = {'Date1', 'Time1', 'Date2', 'Time2', 'Value', 'Dim', 'Units'};

% Create full datetime object columns from the date and time columns
t.DateTime1 = datetime( strcat(t.Date1,t.Time1), 'InputFormat', 'yyyy-MM-ddHH:mm:ss' );

如果您确实知道格式,可以在
readtable
中指定
'format'
属性,它将在读取时转换数据。

对于混合数据类型,我建议使用
readtable
。这将直接将数据读入
对象,而无需指定格式规范或使用
fopen

t = readtable( 'myFile.txt', 'ReadVariableNames', false, 'Delimiter', ',' );
然后您可以轻松地操作数据

% Variable names in the table
t.Properties.VariableNames = {'Date1', 'Time1', 'Date2', 'Time2', 'Value', 'Dim', 'Units'};

% Create full datetime object columns from the date and time columns
t.DateTime1 = datetime( strcat(t.Date1,t.Time1), 'InputFormat', 'yyyy-MM-ddHH:mm:ss' );

如果您确实知道格式,您可以在
readtable
中指定
'format'
属性,并且它将在读取时转换数据。

这很好,几个行的可行示例非常有用,因为我们现在可以测试您的代码。现在缺少的是你的具体问题。。。您可以阅读
fgetl
文档以了解如何读入文本文件,也可以阅读
readtable
文档以了解像这样的分隔文件。。。我们不知道您是否遇到了错误、不希望的输出或任何其他特定问题?我正在尝试读取每个逗号分隔的值,以便最终得到如下输出:Date | time | Date | time | value end line Date | time | Date | time | value end line类似于excel表格这很好,几行代码的一个可行示例非常有用,因为我们现在可以测试您的代码了。现在缺少的是你的具体问题。。。您可以阅读
fgetl
文档以了解如何读入文本文件,也可以阅读
readtable
文档以了解像这样的分隔文件。。。我们不知道您是否收到错误、不需要的输出或任何其他特定问题?我正在尝试读取每个逗号分隔的值,因此,我最终得到了一个类似于excel表格的输出:Date | time | Date | time | value end line Date | time | Date | time | value end line类似于excel表格当代码与问题中的代码非常相似时,指出为使其工作而实际做了哪些更改(以及为什么需要它)是非常有用的“给你"!谢谢你的指导。编辑了答案。谢谢。这个方法是对第5列进行四舍五入,这怎么能允许小数点呢?还有,不是有5个26044 x 1单元格,而是有一个26044 x 5单元格吗?当代码与问题中的代码非常相似时,指出为使其工作而实际更改了什么(以及为什么需要它)而不仅仅是“给你”!谢谢你的指导。编辑了答案。谢谢。此方法是将第5列四舍五入,这怎么可能允许小数点?而且,不是有5个26044 x 1单元格,而是有一个26044 x 5单元格?对于来自日期和时间列的%Create full datetime对象列,我得到以下错误:使用strcat时出错(第86行)datetime和double数组之间未定义比较。在我的示例中,
Date1
Time1
列最初是字符类型。。。您是否已将它们作为日期或数字导入?我上面的代码与您发布的文本一字不差,但没有出现此错误…对于来自日期和时间列的%Create full datetime对象列,我得到以下错误:在datetime和双数组之间未定义使用strcat(第86行)比较的错误。在我的示例中,
Date1
Time1
列最初是字符类型。。。您是否已将它们作为日期或数字导入?我上面的代码与您发布的文本一字不差地工作没有这个错误。。。