Calculate mean monthly from daily values
조회 수: 5 (최근 30일)
이전 댓글 표시
I have a file that is 22281 rows x 5 col. This represents 60 years of daily values. I need to calculate mean monthly values for all years and extract, say, only May, to a new file. The resulting output will be 60 values for mean monthly data for May. This will be to compare col4 to col5 (below).
col1=year
col2=month
col3=day
col4=data1
col5=data2
Please help!
댓글 수: 0
채택된 답변
the cyclist
2012년 1월 26일
Take a look at the solutions to this question: http://www.mathworks.com/matlabcentral/answers/27088-sort-data-by-day-of-year. You might find some ideas there that help you.
댓글 수: 0
추가 답변 (1개)
Kostas
2012년 1월 26일
maybe smt like this could work
suppose you have a matrix called data(22281,5) months are stored in second column
for i=1:12 %loop over months
idx=find(data(:,2)==i); % find all indeces for the specific month
meandata1=mean(idx,4);
meandata2=mean(idx,5);
meandata(i,:)=[i meandata1 meandata2]; %store in a new matrix the mean values per months
end
now you can just find and print in a file the values for the 5th month (May)
댓글 수: 5
Faisal Amri
2017년 11월 23일
I Tried to modify, this what I got and it works for me though I still working to make it better. Hope this helps
k=1
%Calculating Monthly Average
for j=1992:2012 %Years Looping
for i=1:12 %Months Looping
idx=find((Data(:,1)==i) & (Data(:,3)==j)); %Find all indeces for the specific month
meandata1=mean(Data(idx,4),1);
Monthly_Ave(k,:)=[i,j,meandata1;]; %Store in a new matrix the mean values per month
k=k+1;
end
end
참고 항목
카테고리
Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!