从 csv 中读取 ms 中的时间戳,在 Matlab 中以科学格式显示

Posted

技术标签:

【中文标题】从 csv 中读取 ms 中的时间戳,在 Matlab 中以科学格式显示【英文标题】:Reading timestamp in ms from csv, showing in scientific format in Matlab 【发布时间】:2015-10-20 12:11:14 【问题描述】:

我有一个包含时间戳列的 csv 文件。在记事本、Excel 和 Matlab 中,值以科学格式显示,例如'1,44532E+12'。因此,该值非常不准确。在 Excel 中,我可以计算 2 个值之间的差异并得到合理的差异。因此,Excel 中的科学格式只是格式。实际单元格内容是 '1445322672767'。

我很困惑为什么该值在记事本中显示为“1,44532E+12”。但这不是我的问题。我正在尝试在 Matlab 中分析数据,但我做不到。我试过 textscan、readtable 和 csvread。但我无法获取除字符串以外的值。使用 str2num 可以将其更改为双精度,但精度仅为 6 位(完全没用)。

有什么建议吗?

【问题讨论】:

您能分享一个指向您文件的链接吗?原始数据格式是什么?您是否从 Excel 开始并从那里写出一个 csv 文件?或者您有读入 Excel 的 csv 文件? 听起来原始文件来自Excel,并以您描述的有限符号导出。请注意,一旦导出,精度信息将永久丢失,这与textscan 等或用于打开导出文件的程序无关。您需要从一开始就以全精度导出。见this question @ microsoft 谢谢!该文件来自 android 应用程序 Wahoo Fitness。有一个用于踏板节奏,一个用于车轮旋转。这是踏板节奏的文件:dl.dropboxusercontent.com/u/40762003/… 找到了!我用 Excel 打开它们,然后我想我不小心将它们保存为 .csv 格式。这实际上将内容从“1445322672767”更改为“1,44532E+12”。非常感谢!你的cmets让我找到了它! :) 【参考方案1】:

我知道这是一个旧线程,但如果有人需要信息。 在我从 Wahoo 获得的关于 HR 培训和 GPS 数据的 csv 文件中,时间戳是 Unix,我想增加了数百秒,13 位数。所以我提取了前 10 个以转换为 Windows 时间。

=LEFT(A1, 10) / 86400 + 25569 + 2/24

但 Wahoo 正在远离 TCX 和 CSV 文件,其中的错误不会成为优先修复的对象。 .FIT 文件是“每个人”现在使用的。 我和他们有过接触。我刚刚完成了 TCX 到 Excel 的自动化,但在最新的 Android 更新中 HR 和其他数据被搞砸了,他们不会修复它。

“CSV 文件和 TCX 仍然会存在,只是不像 Fit 文件那样受支持,但 CSV 会解决问题,并且我敢肯定会存在相当长的一段时间。”

但在 thisisant.com SDK(Java 部分)中有拖放批处理文件可将 .fit 二进制文件转换为 csv 文件。当然需要安装 Java。

【讨论】:

以上是关于从 csv 中读取 ms 中的时间戳,在 Matlab 中以科学格式显示的主要内容,如果未能解决你的问题,请参考以下文章

如何读取带有时间戳字段的 csv?

将 .csv 导入 MS Access。 “AtEndOfStream”没有读取最后一行

使用熊猫读取带有时间戳列的 csv

将特定数据从 csv 文件导入 MS Access

如何将 pandas 时间戳添加到数据帧 post read_csv

从 oracle-sql 中的时间戳日期列中提取日期