在 MATLAB 中从 CSV 文件读取日期和时间

2024-02-21

datetime, M01, M02, M03, M04, M05, M06
8/15/2009 0:00, 5.8, 7.8, 7.8, 7.3, 0, 7.9
8/15/2009 0:10, 7.1, 8.1, 8.1, 7.7, 0, 8.1
8/15/2009 0:20, 6.8, 7.4, 7.6, 7.1, 0, 7.3
8/15/2009 0:30, 5.6, 6.8, 7.1, 6.6, 0, 6.8
8/15/2009 0:40, 3.9, 6.2, 6.4, 6.2, 0, 6.4
8/15/2009 0:50, 4.6, 5.5, 6.1, 5.8, 0, 5.6
8/15/2009 1:40, 7, 7, 7.2, 6.9, 0, 6.3

你能帮我正确读取这个 CSV 文件,以便我可以使用以下命令将第一列转换为字符串吗datenum http://www.mathworks.com/access/helpdesk/help/techdoc/ref/datenum.html? csvread http://www.mathworks.com/access/helpdesk/help/techdoc/ref/csvread.html当然不行。和textscan http://www.mathworks.de/access/helpdesk/help/techdoc/ref/textscan.html我不知道如何调用它,所以我不会收到错误。 日期和时间位于同一列中。

抱歉,这听起来可能是一个愚蠢的问题!

我现在知道如何阅读上面的文件了。但我如何以完全相同的格式将其写回到 file.txt 中? 我的意思是我修改了一些列,现在需要一个第 1 列和第 1 行具有相同格式的类似文件。 谢谢您的帮助


根据您上面的评论,如果数据如下所示:

datetime, M01, M02, M03, M04, M05, M06
8/15/2009 0:00, 5.8, 7.8, 7.8, 7.3, 0, 7.9
8/15/2009 0:10, 7.1, 8.1, 8.1, 7.7, 0, 8.1
8/15/2009 0:20, 6.8, 7.4, 7.6, 7.1, 0, 7.3
8/15/2009 0:30, 5.6, 6.8, 7.1, 6.6, 0, 6.8
8/15/2009 0:40, 3.9, 6.2, 6.4, 6.2, 0, 6.4
8/15/2009 0:50, 4.6, 5.5, 6.1, 5.8, 0, 5.6
8/15/2009 1:40, 7, 7 7.2, 6.9, 0, 6.3

然后使用以下命令将其读取为矩阵:

fid = fopen('file.csv', 'rt');
a = textscan(fid, '%s %f %f %f %f %f %f', ...
      'Delimiter',',', 'CollectOutput',1, 'HeaderLines',1);
fclose(fid);

format short g
M = [datenum(a{1}) a{2}]

...以及我得到的输出:

M =
    7.34e+005        5.8        7.8        7.8        7.3          0        7.9
    7.34e+005        7.1        8.1        8.1        7.7          0        8.1
    7.34e+005        6.8        7.4        7.6        7.1          0        7.3
    7.34e+005        5.6        6.8        7.1        6.6          0        6.8
    7.34e+005        3.9        6.2        6.4        6.2          0        6.4
    7.34e+005        4.6        5.5        6.1        5.8          0        5.6
    7.34e+005          7          7        7.2        6.9          0        6.3

如果你设置显示format http://www.mathworks.com/help/techdoc/ref/format.html对于长输出,您将看到完整的数字(注意它们仍然完整存储),或者使用fprintf http://www.mathworks.com/help/techdoc/ref/fprintf.html:

fprintf('%.9f\n', M(:,1))
734000.000000000
734000.006944445
734000.013888889
734000.020833333
734000.027777778
734000.034722222
734000.069444445
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 MATLAB 中从 CSV 文件读取日期和时间 的相关文章

随机推荐