필터 지우기
필터 지우기

If Else Statement for the rainfall data

조회 수: 1 (최근 30일)
Saleem Sarwar
Saleem Sarwar 2015년 10월 1일
답변: Andrei Bobrov 2015년 10월 1일
I have a time series of daily rainfall data from 1950 to 2013. I want to implement following conditions to the data if rainfall is less than 0.5 then 1 , if rainfall is between 0.5 to 1.1 then 2 otherwise 3. How to write the code for this analysis?

채택된 답변

Walter Roberson
Walter Roberson 2015년 10월 1일
function rlev = rain_level(rainfall)
rlev = ones(size(rainfall));
idx = rainfall > 0.5 & rainfall < 1.1;
rlev(idx) = 2;
idx = rainfall >= 1.1 | rainfall == 0.5;
rlev(idx) = 3;
end
The "rainfall == 0.5" is necessary because 0.5 exactly is not less than 0.5 and is not between 0.5 and 1.1 either; you indicated 3 "otherwise" so the 3 has to apply to all ranges not listed, including the 0.5 exactly.
1.1 exactly cannot happen in binary floating point (1/10th is an infinite repeating number in binary) so the question of whether 1.1 exactly belongs in level 2 or 3 becomes irrelevant, and we might as well code >= on the 1.1 for clarity.

추가 답변 (1개)

Andrei Bobrov
Andrei Bobrov 2015년 10월 1일
[~,~,ii]=histcounts(data_of_daily_rainfall,[-inf,.5,1.1,inf]);
y = 1:3;
out = y(ii);

카테고리

Help CenterFile Exchange에서 Graphics Object Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by