2010-04-28 371 views
0

任何简单的方法来读取MATLAB中的所有列?MATLAB时间戳读取

我的格式是

date time y1 y2 y3 y4 .........................  
4/27/2010 00:3:09 34 45 45 56 ................  

等等......目前我的代码阅读这些:

[c,pathc]=uigetfile({'*.txt'},'Select the data','C:\Data');  
file=[pathc c];  
data= dlmread(file, ',', 1,3);  

所以不用说我跳过时间戳。

想知道是否有简单的方法来读取时间戳,并以小时为单位绘制其他列。

我的文件是43200×30的,有些是86400×90

相关问题:是格式同样为.csv和.xls文件,我的意思当然除了xlsread

回答

1

我已经回答了你在这里相同的数据的问题: skip reading headers in MATLAB

[c,pathc]=uigetfile({'*.txt'},'Select the data','C:\Data'); 
file=[pathc c]; 
A = importdata(file, ' ', 1); 
dt = datenum(A.textdata(2:end,1),'mm/dd/yyyy'); 
tm = datenum(A.textdata(2:end,2),'HH:MM:SS'); 
tm = dt+tm-datenum('0:0','HH:MM'); %# combine date and time and correct for zero time. 
data = A.data; 

您可以绘制您的数据对tm和使用DATETICK函数来显示日期的任何格式。

plot(tm,data) 
datetick('x','HH') 
xlabel('Time, hours') 

编辑

您还可以使用Jonas's solution对于前一个问题来读取数据。然后做与上面相同:

dt = datenum(dateAndTimeCell(:,1),'mm/dd/yyyy'); 
tm = datenum(dateAndTimeCell(:,2),'HH:MM:SS'); 
tm = dt+tm-datenum('0:0','HH:MM'); 

plot(tm,dataArray,'o-') 
datetick('x','HH') 
xlabel('Time, hours') 
+0

我得到了一大堆的错误,我不明白他们 ???错误使用==> dlmread at 145 文件和格式字符串不匹配。 麻烦从文件中读取数(行1, 场5)==>:00:0 错误==> dlmread在90 结果= dlmread(文件名,分隔符,R,0); 错误==> testwith_timestamps at 45 data = dlmread(file,',',1); ???错误使用==> importdata at 199 无法加载文件。 – Paul 2010-04-28 15:37:04

+0

使用TEXTSCAN或FREAD更复杂的 格式。 错误==> testwith_timestamps at 49 A = importdata(file,'',1); 引起: 错误使用==> vertcat CAT参数尺寸不是 一致。 – Paul 2010-04-28 15:37:33

+0

我在使用uiget命令后使用了与您的代码相同的代码减去我用作ur代码导入数据的dlmread – Paul 2010-04-28 15:38:11

0

我相信sscanf的就可以了你。