Help in averaging climate data
이전 댓글 표시
I am a novice in matlab and looking for help with calculating average monthly data from hourly data.
I have the data for full year in one file and have multiple txt files for different years. Column 1 is year, column 2 is month of year (1 to 12), column 3 is day of month and column 4 is hour of day (0 to 23). Looking forward to some guidance on how to do this.
Thanks in advance
댓글 수: 5
Kye Taylor
2013년 6월 6일
Have you imported the data into MATLAB? I.e. do you have the data stored in a N-by-4 dimensional matrix yet?
Kye Taylor
2013년 6월 6일
So, does a row of the data looks like
[1990, 2, 28, 23] % for 11pm Feb 28 1990
Where is the climate data? Is that stored in another column? or a separate vector?
Sam
2013년 6월 6일
Kye Taylor
2013년 6월 6일
So, which columns of the 13 are the four you describe above, and which one is the climate data?
Sam
2013년 6월 6일
답변 (2개)
Roger Stafford
2013년 6월 6일
I'll suppose you have the climate data in column five of an array, A, with the year, month, day, and hour in its columns 1, 2, 3, and 4, respectively.
[u,~,ix] = unique(A(:,1:2),'rows');
B = [u,accumarray(ix,A(:,5))./accumarray(ix,1)];
댓글 수: 5
Roger Stafford
2013년 6월 6일
It should produce a row for every year-month combination, not just for 12 months.
If you can fully(!) describe the "missing value" situation, perhaps a solution could be found. As things stand, I can only guess at what you mean.
Sam
2013년 6월 6일
Roger Stafford
2013년 6월 6일
You could initially remove all rows with the "999.9" data values:
A = A(A(:,5)~=999.9,:);
However, it might be better to allow some tolerance for rounding differences:
A = A(abs(A(:,5)-999.9)<100*eps(999.9),:);
Noor Mohd Safar
2015년 7월 14일
Thank you guys.
카테고리
도움말 센터 및 File Exchange에서 Climate Science and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!