使用日期在csv文件中绘制matlab中的数据?

时间:2015-09-27 02:10:46

标签: matlab csv plot

所以我的问题分为两部分:

  1. 我正在尝试用matlab中的CSV文件绘制数据:这是我到目前为止所拥有的:

    filename = fopen('\fileDir.csv\', 'rt');
    FILE = textscan(filename, '%s %f %f', 'delimiter', ',' 'HeaderLines', 1);
    Date = FILE{1};
    Start = FILE{2};
    Stop = FILE{3};
    

    所以我在MATLAB中尝试plot(Date, Start)。显然这不会起作用,因为Date是一个字符串。我该如何处理更改代码?

    csv文件中的日期格式为:9/1/201410/12/201412/5/2014等...(因此月和日中没有前面的零) )。

  2. 根据这些数据,我做了一些计算。假设我的csv文件的长度为100.(DateStartStop长度为100)。我会根据变量n创建一个新数组。 NEW_ARRAY长度为80,如果n为20,如果NEW_ARRAY长度为85,则n为15.然后我想要plot(Date, NEW_ARRAY),但是它们的长度不同,我希望Date从第16个(n+1)元素开始。

1 个答案:

答案 0 :(得分:1)

您可以先在MATLAB中使用datenum将日期转换为数字数据。然后,您可以使用datetick将刻度标签显示为格式化日期。

因此我们可以使用

绘制您的数据
plot(datenum(Date), Start);
datetick('x', 20);

其中20是特定的dateformat标识符。

为了使用数据光标在图表上显示日期,我们需要编辑datacursormode并添加我们自己的'UpdateFcn'。我们可以通过编写一个函数

来做到这一点
function output_txt = datacursordate(~, event_obj)
    pos = get(event_obj,'Position');
    output_txt{1} = ['X: ' datestr(pos(1), 20)];
    output_txt{2} = ['Y: ' num2str(pos(2))];
end

然后将其应用于datacursormode

h = figure;
plot(datenum(date), start)
datetick('x', 20)
dcm_obj = datacursormode(h);
set(dcm_obj, 'UpdateFcn', @datacursordate)

关于您的第二个问题,我们可以通过DateDate(n + 1:end)建立索引来实现这一目标。这将在Date元素处开始使用(i + 1),并一直持续到end Date

plot(datenum(Date(n + 1:end)), NEW_ARRAY);
datetick('x', 20);