how to take out specific month from data
1 view (last 30 days)
Show older comments
sir i have 95 year daily model output rainfall data form 2006-1-1 to 2100-1-1.i want to take out nov to feb from every year lear all;close all;clear global;
load prec_GFDL_CM3_rcp26.mat X1 Y1 prec_all_years;
%load prec_GFDL_CM3_rcp85.mat X1 Y1 prec_all_years;
% the data is for 95 years;
% here i am selecting the data from may to oct only i.e. 184 data points every year;
xx = [];
for i = 1:95;
if i==1
xx = [xx (i-1)*[1:59]];
elseif i == 95;
xx = [xx (i-1)*[11339:11400]];
else
xx = [xx (i-1)*365+[305:424]];
end
end
prec_all_years1 = 86400*prec_all_years; % the rainfall is converted to mm/day
prec_nov_feb = prec_all_years1(:,:,xx);
% daily maximum rainfall over India
[mm nn tt]=size( prec_all_years1);
for jj = 1:tt;
yy = prec_all_years1(:,:,jj);
max_rainfall(jj) = max(yy(:));
end
this is not work properly
please help me .Thank you!
1 Comment
Image Analyst
on 20 Apr 2014
Original question in case vanuesh deletes it:
sir i have 95 year daily model output rainfall data form 2006-1-1 to 2100-1-1.i want to take out nov to feb from every year lear all;close all;clear global;
load prec_GFDL_CM3_rcp26.mat X1 Y1 prec_all_years;
%load prec_GFDL_CM3_rcp85.mat X1 Y1 prec_all_years;
% the data is for 95 years;
% here i am selecting the data from may to oct only i.e. 184 data points every year;
xx = []; for i = 1:95; if i==1
xx = [xx (i-1)*[1:59]];
elseif i == 95;
xx = [xx (i-1)*[11339:11400]];
else xx = [xx (i-1)*365+[305:424]];
end
end prec_all_years1 = 86400*prec_all_years; % the rainfall is converted to mm/day
prec_nov_feb = prec_all_years1(:,:,xx);
% daily maximum rainfall over India
[mm nn tt]=size( prec_all_years1);
for jj = 1:tt;
yy = prec_all_years1(:,:,jj); max_rainfall(jj) = max(yy(:)); end
this is not work properly please help me .Thank you!
Accepted Answer
Andrei Bobrov
on 4 Apr 2014
Edited: Andrei Bobrov
on 21 Apr 2014
Let the 'a' is date for first frame of your 3D matrix (eg 'prec_all_years')
a = [2006,1,1];
[m,n,k] = size(prec_all_years1);
dten = datenum([2006 1 1 ;2100 1 1])
[~,M] = datevec(datenum(a) + (0:k-1)');
xx = ismember(M,[11 12 1 2]);
p = prec_all_years1(:,:,xx);
max_rainfall = max(reshape(p,m*n,[]));
add
[m,n,k] = size(prec_all_years1);
ii = cumsum(eomday(2014,1:12));
x0 = rem(0:k-1,365)+1;
xx_logic = x0 <= ii(2) | x0 > ii(10);
p = prec_all_years1(:,:,xx_logic);
max_rainfall = max(reshape(p,m*n,[]));
10 Comments
More Answers (0)
See Also
Categories
Find more on Dates and Time in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!