MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by varunesh
on 4 Apr 2014

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!

*No products are associated with this question.*

Answer by Andrei Bobrov
on 4 Apr 2014

Edited by Andrei Bobrov
on 21 Apr 2014

Accepted answer

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,[]));

Show 7 older comments

varunesh
on 5 Apr 2014

Andrei Bobrov sir if this will be include leap years then what will be change or add in this code ? thank you.

varunesh
on 5 Apr 2014

## 1 Comment

## Image Analyst (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/124439#comment_209149

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;

% 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;

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!