【问题标题】:MATLAB time stamps readingMATLAB 时间戳读取
【发布时间】:2010-04-28 15:10:20
【问题描述】:

有什么简单的方法可以读取 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 X 30,有些是 86400 X 90

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

【问题讨论】:

    标签: matlab datetime file-io timestamp


    【解决方案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 for previous question来读取数据。然后同上:

    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')
    

    【讨论】:

    • 我得到一大堆错误,我不明白他们???在 145 文件和格式字符串不匹配时使用 ==> dlmread 时出错。无法从文件中读取数字(第 1 行,第 5 字段)==> :00:0 错误 ==> dlmread at 90 result= dlmread(filename,delimiter,r,0); ==> testwith_timestamps 中的错误 45 data= dlmread(file, ',', 1); ???在 199 处使用 ==> 导入数据时出错,无法加载文件。
    • 对更复杂的格式使用 TEXTSCAN 或 FREAD。 ==> testwith_timestamps 中的错误在 49 A = importdata(file, ' ', 1);原因:错误使用 ==> vertcat CAT 参数尺寸不一致。
    • 在我的 uiget 命令减去我用作你的代码导入数据的 dlmread 之后,我使用了与您相同的代码
    • 您不能使用 dlmread 读取非数字数据。日期实际上是文件中的字符串。并使用空格作为分隔符,而不是逗号。使用 dlmread 您不仅要跳过一行,还要跳过左侧的 2 列。
    • 它仍然给我 datenum 错误???在 174 DATENUM 处使用 ==> datenum 时出错失败。 ==> testwith_timestamps 中的错误在 51 dt = datenum(A.textdata(2:end,1),'mm/dd/yyyy');原因:错误使用 ==> dtstr2dtnummx 将日期字符串转换为日期数字失败。
    【解决方案2】:

    我相信 sscanf 会为您解决问题。

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2018-07-09
      • 1970-01-01
      • 2019-06-15
      • 2023-03-10
      • 1970-01-01
      • 2017-12-09
      • 2017-10-25
      • 1970-01-01
      相关资源
      最近更新 更多