Making a monthly mean

7 ビュー (過去 30 日間)
Jonas Damsbo
Jonas Damsbo 2018 年 10 月 27 日
コメント済み: Jonas Damsbo 2018 年 10 月 27 日
Hi
I have data for the geopotential for every 6 hours over a whole month. I want to get a mean over the data for the month. For example for January, I have 124 timesteps, each with their data, but I only want data for the whole month (1 dataset). I have tried, but I'm not sure if I've done it right? Pleas can anyone help me?
lon = ncread(filename,'longitude') ; nx = length(lon) ;
lat = ncread(filename,'latitude') ; ny = length(lat) ;
time = ncread(filename,'time') ; nt = length(time);
zmean = zeros([nx ny]);
for n = 1:nt
z = ncread(filename,'z',[1 1 nt],[nx ny 1]);
zx(:,1:ny) = z(:,ny:-1:1);
zmean = zmean + zx;
end
zmean = zmean/nt;
Here is (lon = 360x1), (lat = 181x1), (time = 124x1 int32), (z = 360x181)

採用された回答

jonas
jonas 2018 年 10 月 27 日
編集済み: jonas 2018 年 10 月 27 日
Use datetime with retime . Upload data for details.
  6 件のコメント
jonas
jonas 2018 年 10 月 27 日
After looking at your data I think perhaps a timetable is in fact not the way to go, as I suspect that you want to retain the gridded nature of your data. If the problem is to average the monthly data, then I think there is a very simple solution. Simply,
z = ncread(filename,'z');
z_monthly(:,:,1) = mean(z,3);
This takes the average over the third dimension (time). Then you can simply put february's data in z_monthly(:,:,2) etc... and you will end up with a lat x lon x n matrix where n is the number of months.
If the data is uniformly spaced, then I see no point in using retime. If some data is missing, however, then you'd probably want to interpolate before taking the average.
I would also suggest you take your time-vector and convert it to datetime, to make life easier for you.
t = datetime(1900,1,1,0,0,0)+hours(time);
t =
124×1 datetime array
01-Dec-1979 00:00:00
01-Dec-1979 06:00:00
01-Dec-1979 12:00:00
Did I understand the issue?

サインインしてコメントする。

その他の回答 (1 件)

Jonas Damsbo
Jonas Damsbo 2018 年 10 月 27 日
I think I understand your solution. You can see I have data for one month for every 6 hour and I want the mean for the month (over all hours in the month - in this example December).
  2 件のコメント
Jonas Damsbo
Jonas Damsbo 2018 年 10 月 27 日
Great! Thank you!

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by