poster
2019-12-10, 16:49
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 如果将显示格式 (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
更多&回答... (https://stackoverflow.com/questions/1641519)
抱歉,这听起来可能是一个愚蠢的问题!!!
我知道现在如何阅读阅读以上文件。但是我如何以完全相同的格式将其写回到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 如果将显示格式 (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
更多&回答... (https://stackoverflow.com/questions/1641519)