在 MATLAB 中从 CSV 文件中读取日期和时间 [英] Reading date and time from CSV file in MATLAB
问题描述
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?csvread 当然不起作用.使用 textscan 我不知道如何称呼它,所以我没有得到错误.日期和时间在同一列中.
Can you help me to read this CSV file properly so I can convert the first column into a string using datenum? csvread of course does not work. With textscan I am lost how to call it , so I do not get errors. The date and time are in the same column.
抱歉,这可能是个愚蠢的问题!!!
Sorry it might sound a dumb question!!!
我现在知道如何阅读上面的文件了.但是我如何以完全相同的格式将它写回到 file.txt 中?我的意思是我修改了一些列,现在需要一个类似的文件,第 1 列和第 1 行的格式相同.感谢您的帮助
I know how to read read the above file now. but how do i write it back in a file.txt in the exact same format?? i mean i modified some columns and now need a similar file with same format for column 1 and row 1. Thanks for the help
推荐答案
根据你上面的评论,如果数据看起来像:
According to your comment above, if the data looks like:
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
然后使用以下内容将其作为矩阵读取:
then use the following to read it as a matrix:
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}]
...以及我得到的输出:
... and the output I get:
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 设置为长输出,您将看到完整的数字(注意它们仍然完整存储),或使用 fprintf:
if you set the display format to a long output, you will see the full numbers (note they are still stored in full), or use fprintf:
fprintf('%.9f
', M(:,1))
734000.000000000
734000.006944445
734000.013888889
734000.020833333
734000.027777778
734000.034722222
734000.069444445
这篇关于在 MATLAB 中从 CSV 文件中读取日期和时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!