我通过电表收购,分为3天。我每天都以hh:mm:ss
格式提取时间。这意味着第一天从12:32
到14:39
,第二天从14:12
到16:17
等。温度相同(从23到24°,从22到2的2天) 24等)。
现在我必须绘制数据(ph
wrt
T
和Time
),但是如果我连接3个时间和T
向量,或者为每个时间和温度创建一个列向量,MATLAB会自动按值增加值x
- 曲线的值。我需要沿轴保留原始值(这意味着值必须为14:32
14:33
14:34
12:24
12:25
等等,温度相同因为我必须在获取时保持数据的连续性。
答案 0 :(得分:0)
将你的hh:mm:ss转换为datenum - 可能需要添加日,月,年,以便按照你想要的正确顺序。然后你可以将你的刻度设置为HH:MM:SS或秒或任何你需要的。 看这里: https://www.mathworks.com/help/matlab/ref/datetick.html
答案 1 :(得分:0)
从2014b开始,您可以使用datetime
。
选择实际录制日期或相隔一天的某些任意日期,并将日期部分指定给您的数据,如
% Create 3 random time arrays of the format 'hh:mm:ss'
t = [randi([10,14], 10,1), randi([0,59], 10,1), randi([0,59], 10,1)];
T1 = [num2str(t(:,1), '%02i'), repmat(':', 10, 1), num2str(t(:,2), '%02i'),repmat(':', 10, 1), num2str(t(:,3), '%02i')];
t = [randi([10,14], 10,1), randi([0,59], 10,1), randi([0,59], 10,1)];
T2 = [num2str(t(:,1), '%02i'), repmat(':', 10, 1), num2str(t(:,2), '%02i'),repmat(':', 10, 1), num2str(t(:,3), '%02i')];
t = [randi([10,14], 10,1), randi([0,59], 10,1), randi([0,59], 10,1)];
T3 = [num2str(t(:,1), '%02i'), repmat(':', 10, 1), num2str(t(:,2), '%02i'),repmat(':', 10, 1), num2str(t(:,3), '%02i')];
% Convert to dates on consecutive days
D1 = datetime(strcat('2000-01-01-', T1), 'inputformat', 'yyyy-MM-dd-HH:mm:ss');
D2 = datetime(strcat('2000-01-02-', T1), 'inputformat', 'yyyy-MM-dd-HH:mm:ss');
D3 = datetime(strcat('2000-01-03-', T1), 'inputformat', 'yyyy-MM-dd-HH:mm:ss');
% Plot
data = rand(30,1);
plot([D1, D2, D3], data);