我需要以八度为单位读取文件,该文件的每一行都具有时间格式(数据和小时)值以及一些温度测量值,每个温度测量值之间用分号分隔。例如,假设我的文件filename.txt具有以下数据:
08/07/2018;09:50:51;0.0;0.0;19.6
08/07/2018;09:50:58;0.0;0.0;19.5
08/07/2018;09:51:12;0.0;0.0;19.5
我的目的是相对于一些参考时间将小时数转换为相对秒数。我已经尝试使用dlmread命令来通过写来指定值分隔符
M = dlmread('filename.txt',";")
但是八度实际上读为:
M =
8 9 0 0 19.6
8 9 0 0 19.5
8 9 0 0 19.5
要八度完全读取文件中的全部数据,该怎么说?
感谢您提供的帮助
答案 0 :(得分:1)
dlmread
将尝试将所有内容强制转换为数字,以便它可以将结果返回为矩阵。您可能要使用dlmread
而不是使用textscan
,而是将前两列作为字符串读取,将其余两列作为浮点数:
fid = fopen('filename.txt', 'rb');
data = textscan(fid, '%s %s %f %f %f', 'Delimiter', ';');
然后,您可以将第一列和第二列合并为日期字符串,并计算它们的datenum
,使您可以将所有内容放入数值矩阵,其中第一列为时间戳记:
dates = cellfun(@(day, time)datenum([day, ' ', time], 'mm/dd/yyyy HH:MM:SS'), data{1:2})
data = [dates(:), data{3:end}]
% 737279.41031 0.00000 0.00000 19.60000
% 737279.41039 0.00000 0.00000 19.50000
% 737279.41056 0.00000 0.00000 19.50000
然后,您可以使用这些时间戳,通过简单的减法来确定相对于您想要的任何参考的差异(时间)。