0

我有一个文件夹,里面装满了数千个 csv 文件。当我打开一个文件时,数据如下所示:

20110503    01:46.0  1527.8  1  E
20110503    01:46.0  1537.8  1  E
20110504    37:40.0  1536.6  1  E
20110504    37:40.0  1533.6  1  E
20110504    36:17.0  1531.1  1  E

第二列(时间)在小数点前有分钟和秒。如果我选择第二列,右键单击并单击格式单元格,选择时间,然后更改为13:30:55模式,相同的数据如下所示:

20110503    19:01:46 1527.8 1   E
20110503    19:01:46 1537.8 1   E
20110504    0:37:40  1536.6 1   E
20110504    0:37:40  1533.6 1   E
20110504    8:36:17  1531.1 1   E

现在我可以看到小时、分钟和秒。我编写了一个读取这些文件的 matlab 函数,但需要能够读取时间。该功能只能在我更改格式以显示小时后使用。现在我必须将该功能应用于文件夹中的所有文件。

我想知道,有没有办法改变默认时间显示,所以包括小时?如果没有,有没有办法编写脚本来更改这些文件的格式?谢谢!

注意:我的 matlab 函数中读取文件的部分如下所示:

fid = fopen('E:\Tick Data\Data Output\NGU13.csv','rt'); 
c = fscanf(fid, '%d,%d:%d:%d,%f,%d,%*c');

datamat = reshape(c,6,length(c)/6)'; % reshape into matrix

yyyymmdd = datamat(:,1);    
hr = datamat(:,2);             
mn = datamat(:,3);            
sec = datamat(:,4);
pp = datamat(:,5); % price
vv = datamat(:,6); % volume 

在 Excel 中:

在此处输入图像描述

在记事本中,您可以看到小时、分钟、秒和毫秒:

20111206,09:50:56.411,4.320,1,E
20111206,10:02:10.167,4.300,1,E
20111206,11:24:09.052,4.313,1,E
20111206,11:46:09.359,4.307,1,E
20111206,11:50:22.785,4.320,1,E
4

1 回答 1

2

对于类型的记录

20010402, 09:30:24.456, 4.235, 1, E

你应该使用这个 fmt:

fmt  = '%f%f:%f:%f.%f%f%*s';
data = textscan(fid, fmt, 'Delimiter',',','CollectOutput',true);
于 2013-06-19T18:44:28.520 回答