所以我的问题分为两部分:
我正在尝试用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/2014
,10/12/2014
,12/5/2014
等...(因此月和日中没有前面的零) )。
根据这些数据,我做了一些计算。假设我的csv
文件的长度为100.(Date
,Start
,Stop
长度为100)。我会根据变量n
创建一个新数组。 NEW_ARRAY
长度为80,如果n
为20,如果NEW_ARRAY
长度为85,则n
为15.然后我想要plot(Date, NEW_ARRAY)
,但是它们的长度不同,我希望Date
从第16个(n+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)
关于您的第二个问题,我们可以通过Date
与Date(n + 1:end)
建立索引来实现这一目标。这将在Date
元素处开始使用(i + 1)
,并一直持续到end
Date
。
plot(datenum(Date(n + 1:end)), NEW_ARRAY);
datetick('x', 20);