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!