필터 지우기
필터 지우기

Empty for loop matrix

조회 수: 2 (최근 30일)
Maya Lewis
Maya Lewis 2020년 12월 14일
댓글: Jan 2020년 12월 14일
Hi there, I'm trying to make a for loop matrix for 90th percentiles of winter rainfall data from a NetCDF file. The code that I have written produces an empty matrix.
fname=[diri fili_1];
fname=fname(~isspace(fname));
prate = single(ncread(fname,'pr'));
TIME=ncread(fname,'time');
TIME2 = double(TIME)/24 + datenum('1970-01-01 00:00:00');
TIME3=datestr(TIME2,0);
dates =datevec(TIME3);
months=dates(:,2);
select_month = dates(:,2)==1 | dates(:,2)==2 | dates(:,2)==12;
winter_precipitation = prate(select_month,:);
%Create a for loop for the graph
mat = winter_precipitation;
startyear = 1981:1999;
endyear = 1982:2000;
nyrs=length(startyear);
P=90;
pmat=zeros(nyrs,12);
for iyr = 1:nyrs
k=find(mat(:,1)>=startyear(iyr) & mat(:,1)<=endyear(iyr));
delmat=mat(k,:);
pmat(iyr,:)=prctile(delmat,P,1);
end
  댓글 수: 5
Maya Lewis
Maya Lewis 2020년 12월 14일
So when I run the code, I want a matrix full of rainfall values, from pmat. What I get instead is NaN in every position.
Soryr I've been working on it so long I've forgotten nobody else knows what I'm doing ahah.
Jan
Jan 2020년 12월 14일
I know this problem. Questions for clarifications are a standard step in solving problems :-)

댓글을 달려면 로그인하십시오.

답변 (1개)

Matt J
Matt J 2020년 12월 14일
I would rewrite the loop as follows,
for iyr = 1:nyrs
k= mat(:,1)>=startyear(iyr) & mat(:,1)<=endyear(iyr);
if ~any(k),
error 'No data satisifes the condition'
end
delmat=mat(k,:);
pmat(iyr,:)=prctile(delmat,P,1);
end

카테고리

Help CenterFile Exchange에서 Time Series Objects에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by