如何在 matlab 中使用日期时间数组绘制事件频率



我有一个日期时间格式的值数组。每个值表示在指定日期和时间发生的事件。如何在每天的事件、每月的事件等中绘制事件频率?

我已经设法使用直方图(mydata。小时)

感谢您的回答!

编辑:下面第一个答案后的一些精度:

是的,这就是我已经使用直方图和数据所做的。小时。但是,我想做的是计算每天的平均事件数,并绘制出我的事件所在的整个时间段。

这是一个工作示例:

% generating 500 random events
dates = datetime(now-1000*rand(500,1),'convertfrom','datenum');
figure;
edges = -0.5:23.5;
histogram(dates.Hour,edges)
title('Events per hours of the day')
xlim ([-0.5 23.5])
ax1 = gca;
ax1.XTick = 0:2:23;
ax1.XTickLabel = {'Midnight','2','4','6','8','10','Noon','14','16','18','20','22'};
ax1.XTickLabelRotation = 45;
figure;
daynumber = weekday(dates);
histogram(daynumber)
title('Events per days of the week')
ax2 = gca;
ax2.XTick = [1:7];
ax2.XTickLabel = {'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'};
ax2.XTickLabelRotation = 45;

假设您已经有一个日期时间数组,您可以使用以下命令访问每个日期时间对象的日、小时、分钟、秒等:

datetime.Day
datetime.Hour
datetime.Minute
使用

这种表示法,我们可以使用一个简单的数组来计算每天/小时/分钟/等发生多少事件,然后使用条形图绘制结果。下面显示了两个示例,您可以从中推断出根据需要进行修改。

以下是绘制一天中每小时的事件频率的方法:

hours_count = zeros(24,1);
for dt = 1:length(datetimes)
    hour = datetimes(dt).Hour;
    hours_count(hour+1) = hours_count(hour+1) + 1;
end
bar(hours_count)
set(gca,'Xtick',1:24,'XTickLabel',strtrim(cellstr(num2str([0:23]'))))
xlabel('Hour of the Day')
ylabel('Number of Events')

以下是绘制一个月内每天的事件频率的方法:

days_in_the_month = 30;
days_count = zeros(days_in_the_month,1);
for dt = 1:length(datetimes)
    day = datetimes(dt).Day;
    days_count(day) = days_count(day) + 1;
end
bar(days_count)
set(gca,'Xtick',1:days_in_the_month,'XTickLabel',strtrim(cellstr(num2str([1:days_in_the_month]'))))
xlabel('Day of the Month')
ylabel('Number of Events')

最新更新