如何绘制每日时间序列中的平均月度数据

时间:2015-01-07 17:42:03

标签: matlab plot

对于预测和观察,我有从1976年1月1日至2001年12月31日的每日降雨量的系列数据。我希望将它们绘制成1月至2月的平均每月图表。你能告诉我如何在Excel或Matlab中做到这一点吗?非常感谢你!

每日数据 This photo represents daily of predicted and observed

我希望它是这样的:

A sample of mean monthly data

1 个答案:

答案 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