如何在 gnu octave 中读取同时具有小时格式和数字数据的数据文件?
How read a data file which has both hour format and numeric data in gnu octave?
我需要以八度为单位读取一个文件,它的每一行都有时间格式(数据和小时)值和一些温度测量值,每一个都用分号分隔。例如,假设我的文件 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
say octave完全读取文件中的全部数据的方法是什么?
感谢您提供的帮助
dlmread
将尝试将所有内容强制转换为数字,以便它可以 return 矩阵中的结果。您可能不想使用 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
然后您可以使用这些时间戳来确定相对于您使用简单减法的任何参考的差异(时间)。
我需要以八度为单位读取一个文件,它的每一行都有时间格式(数据和小时)值和一些温度测量值,每一个都用分号分隔。例如,假设我的文件 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
say octave完全读取文件中的全部数据的方法是什么?
感谢您提供的帮助
dlmread
将尝试将所有内容强制转换为数字,以便它可以 return 矩阵中的结果。您可能不想使用 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
然后您可以使用这些时间戳来确定相对于您使用简单减法的任何参考的差异(时间)。