【问题标题】:creating graph from text file where axis X is date with millisecond precision and Y is value从文本文件创建图形,其中轴 X 是具有毫秒精度的日期,Y 是值
【发布时间】:2012-07-22 09:19:54
【问题描述】:

我有这样的文本文件:

10:00:15:956 0,0155260005803643
10:00:21:968 0,0155280030632315
10:00:21:968 0,0155270018379389
10:00:21:968 0,0155260006126463
10:00:22:069 0,0155239981620611
10:00:22:090 0,0155249993873537

第一列是毫秒精度的时间,第二列是值。 我需要绘制图表,其中 X 轴是时间,Y 轴是值。

  • 我应该使用什么函数来读取文件? dlmread、textscan、importdata?
  • 如何强制matlab识别“时间”?我可以以任何需要的格式(10:00:22:090 或 10.00.22.090 或其他任何格式)编写时间,但我需要 matlab 才能正确理解和处理时间标签。例如,10:00:22:090 和 10:00:23:090 之间的差异是一秒,并且应该在 X 轴上的这些标签之间使用该间隔。我想在 X 轴上看到“时间”,但我不想想要将时间转换为一些“不可读”的 int 值或类似的值(例如,从 10.00.00 开始的毫秒数。)

【问题讨论】:

    标签: matlab datetime file-io plot


    【解决方案1】:

    您可以在几秒钟内获得它并在情节中使用datatics。注意我有一个快速修复来处理第二列中的逗号。可能你不需要它。

    f = fopen('foo.txt');
    data = textscan(f, '%f:%f:%f:%f %f,%f');
    fclose(f);
    
    % hh:min:sec:millisec
    secvec = [60*60 60 1 1e-3];
    x = [data{1:4}] * secvec';
    
    flvec = [1 1e-16];
    y = [data{5:6}] * flvec';
    
    xindays = x / (24*60*60);
    plot(xindays, y, 'x');
    datetick('x', 'HH:MM:SS');
    

    【讨论】:

    • 谢谢,我正在尝试你的建议,明天会告诉你它是如何工作的
    • 谢谢,我接受你的回答!但我有一个问题。为什么将“时间”转换为xindays并进行大量计算? matlab可以以某种方式自动处理吗?可能使用datestr 函数?见mathworks.com/help/techdoc/matlab_prog/bspgcx2-1.html#bspgc4m-1
    • 我的意思是我可能可以将时间读取为“字符串”,然后将其转换为“日期”或“时间”类型?
    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 2015-09-13
    • 2011-02-13
    • 2018-05-20
    • 2018-07-10
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多