在matlab中将分钟转换为小时

时间:2014-09-22 22:00:36

标签: matlab matlab-figure

我有一个图表,其中x轴是从11440的矢量(一天中的分钟数)。我想知道是否有一些方法可以在x轴上使用小时数,同时仍然使用向量中的每个值。

例如:

1 would be marked 12 AM

60 would be marked 1 AM

3 个答案:

答案 0 :(得分:2)

labels = {'12 AM', '1 AM', '2 AM', '3 AM' ...
           '4 AM', '5 AM', '6 AM', '7 AM' ...
           '8 AM', '9 AM','10 AM','11 AM'...
          '12 PM', '1 PM', '2 PM', '3 PM' ...
           '4 PM', '5 PM', '6 PM', '7 PM' ...
           '8 PM', '9 PM','10 PM','11 PM'};
set(gca, 'xtick', 1:60:1440);
set(gca, 'xticklabel', labels);

答案 1 :(得分:1)

如果您不介意稍微更改绘图代码,可以使用datetick,将给定轴上的标签转换为日期。您可以执行以下操作

x = 1:1440;
y = rand(1,1440);
plot(x/1440,y); % dividing minutes by 1440 is the same as converting to datenum
datetick('x','HHPM');

datetick还为您提供'keeplimits''keepticks'的选项,分别保留现有情节的限制和标记。您可以通过更改格式字符串来更改刻度标签。上面的字符串结合了'HH'格式,即一天中的小时(默认为24小时)和'PM'格式,后者将小时数转换为12小时格式,并将AM或PM附加为适当。您可以阅读datetick文档了解所有可能性。

答案 2 :(得分:0)

选项会尊重您原来的tick位置,但会将其转换为您想要的格式:

set( gca , 'XTickLabel' , datestr( (get(gca,'XTick')/1440) , 'HH:MM PM' ) )

您可以查看datestr帮助页面以查看您可以使用的所有其他格式(例如,如果您要删除分钟的显示)。

注意:请注意,这只会更改给定视图的现有刻度线的文本。它不会强制一个给定位置的刻度线(只使用当前位置),一旦放大或缩小它就会变为无效。这意味着每次更改轴X限制时都必须调用该指令。