我有一堆来自CR1000记录器的.dat文件,我正试图将它们读入MATLAB。然而,作为MATLAB的新手,我很难让程序处理CSI.dat文件的dd.mm.yyyy和时间格式。关于如何将其编码并将日期和时间列保留为日期和时间,有什么建议吗?提前谢谢。
我不熟悉MatLab,但您可以使用Loggernet中包含的拆分报告生成软件为数据创建更合适的时间戳集。
祝你好运
岛民
我有一堆来自CR1000记录器的.dat文件,我正试图将它们读入MATLAB。然而,作为MATLAB的新手,我很难让程序处理CSI.dat文件的dd.mm.yyyy和时间格式。关于如何将其编码并将日期和时间列保留为日期和时间,有什么建议吗?提前谢谢。
我不熟悉MatLab,但您可以使用Loggernet中包含的拆分报告生成软件为数据创建更合适的时间戳集。
祝你好运
岛民
Matlab对时间戳非常挑剔。这对您解决这个问题没有帮助,但在未来,如果您将我们的时间输出为日期数组(yyyy,doy,hhmm),ML可以轻松处理这种形式。祝您好运。
我已经有一两个客户向我发送了可以用于Matlab的文件,但我无权分发这些文件。我会联系客户,让他们在论坛上查看:)他们可能有可以分享的东西。
正如IslandMan所提到的,您可以使用Split将日期转换为您需要的任何格式。请参阅关于Date()函数及其格式字符串语法的最新Split帮助。
当做
Dana公司
JFO中,
你最好的选择是使用“;日期编号“;以及“;日期str”;函数。你的日期格式是什么?有许多预定义的日期字符串格式;日期str”;函数,但您也可以使用“;自由形式“;日期格式说明符。下面是一个读取级别记录器数据的代码示例,但它应该会给您一个想法
这将作为变量C加载到原始csv文件中,日期字符串位于第一个单元格中
C=文本扫描(fid,“%s%f%f%f”,“删除”,“,”);
这一行将字符串格式转换为Matlab日期数字格式
MatDate=日期编号(C{1,1},'mm/dd/yyyy HH:mm:SS PM');
非常感谢您的回复!
正如其他人所提到的,使用Split可以自定义数据文件中的日期。
我所做的是使用Split在选择面板中使用edate指令生成一个“串行”日期字段。
Matlab在串行日期方面没有任何问题,然后在Matlab中,您可以使用datetick(“x”、“d-mm-yyyy”)(或任何格式)根据需要在图形上格式化x-axos。适用于日期和时间,没有问题。
新对话如下:RiverOfNoReturn的方法很好。
但如果你想把时间和分钟分开,你可以试试下面的代码。
%从没有标题的原始数据文件中读取一条数据线。
data=文本扫描(fid1,'%s'%s%s%s%s%s%s%s%s,1,'删除',',');
%提取包括小时和分钟的时间数据。
ccc=数据{,1}{,1];
%以字符串的格式从ccc中提取小时数。
hourString=ccc(13:14);
%将字符串转换为数字。
hourInt=str2num(hourString);
%以字符串的格式从ccc中提取分钟。
分钟字符串=ccc(16:17);
%将字符串转换为数字。
minuteInt=str2num(minuteString);