我的数据是excel专栏。在excel表中,一列包含最近50年的日期(没有丢失日期; dd / mm / yyyy格式),而在其他列中包含日常降雨量(过去50年;没有空白)。
我想计算Matlab过去50年每个月的月降雨量总和。请记住,有四种类型的月结束日期:30,31,28和29.到目前为止,我能够从excel文件中读取日期和降雨量值,如下所示
filename = 'rainfalldate.xlsx';
% Extracts the data from each column of textData
[~,DateString ]= xlsread(filename,'A:A')
formatIn = 'dd/mm/yyyy';
DateVector = datevec(DateString,formatIn)
rainfall = xlsread(filename,'C:C');
下一步是什么让我可以看到过去五十年每个月的降雨量总和?
我的意思是假设7月/ 1986降雨量总和......任何新的解决方案?Matlab 2014a中的代码或循环基础
答案 0 :(得分:0)
正如@Daniel建议的那样,你可以使用accumarray
。
由于您希望多年的月降雨量,您可以将年和月合并为一个变量ym
。
然后可以识别某个值是否同时属于确定的年份和月份,并使用histc
函数“标记”它。具有相似“标签”的值由accumarray
函数求和。
作为奖励,您不必担心一个月内的天数。看一下这个例子:
% Variables initialization
y=[2014 2014 2015 2015 2015 2014 2014 2015 2015];
m=[1 1 1 2 2 3 3 3 3]; % jan, feb and march
values = 1:9;
% Identifyier creation and index generation
ym = y*100+m;
[~,subs]=histc(ym,unique(ym));
% Sum
total = accumarray(subs',values);
total
变量是已按年和月(yyyymm)排序的月降雨量。