对于预测和观察,我有从1976年1月1日至2001年12月31日的每日降雨量的系列数据。我希望将它们绘制成1月至2月的平均每月图表。你能告诉我如何在Excel或Matlab中做到这一点吗?非常感谢你!
每日数据
我希望它是这样的:
答案 0 :(得分:1)
首先,您需要找到每个日期所在的月份。根据您的链接数据判断,您可以做一些简单的事情,但(我认为)很慢:
for i = 1:last_index
% use automatic date overflow of datevec() func
ldate = datevec(datenum(1976, 1, i))
month = ldate(2);
从那时起,您可以通过将每个月与其各自的指数相关联,即将观察数据和预测数据分配到月份,即1月= 1,2月= 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。