首先,您需要找出每个日期的月份。从您的链接数据来看,您可以做一些简单但(我认为)很慢的事情:
for i = 1:last_index
% use automatic date overflow of datevec() func
ldate = datevec(datenum(1976, 1, i))
month = ldate(2);
从那时起,您可以通过将每个月与其各自的索引(即一月 = 1、二月 = 2 等)相关联,将观测数据和预测数据分配给月份。
之后,您可以使用bar() 函数绘制每个月的竖线。
编辑:好的,这里还有一些代码。我假设您的数据采用predicted observed 的形式,并且驻留在一个名为rainData 的向量中。
% create matrix for per-month data
monthlyData = zeros(12, 2);
% create matrix for month occurences
months = zeros(12, 1);
for i = 1:length(rainData)
% use automatic date overflow of datevec() func
ldate = datevec(datenum(1976, 1, i))
month = ldate(2);
% update month occurences
months(month) = months(month) + 1;
% update observed sum
monthlyData(month, :) = monthData(month, :) + rainData(i, :);
end
% extract means for each month
% dividing the sum of rain values for each month with the month's occurences
for i = 1:12
monthlyData(i, :) = monthlyData(i, :) / months(i);
end
此时,monthlyData 是 12x2 数组,其中每一行对应一个月,格式为 [predictedValue observedValue]。使用bar(monthlyData) 绘制类似直方图的图形。
另外,如果您无法理解上述索引,请查看Matrices and Arrays Tutorial。