Borrar filtros
Borrar filtros

If Else Statement for the rainfall data

1 visualización (últimos 30 días)
Saleem Sarwar
Saleem Sarwar el 1 de Oct. de 2015
Respondida: Andrei Bobrov el 1 de Oct. de 2015
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?

Respuesta aceptada

Walter Roberson
Walter Roberson el 1 de Oct. de 2015
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.

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 1 de Oct. de 2015
[~,~,ii]=histcounts(data_of_daily_rainfall,[-inf,.5,1.1,inf]);
y = 1:3;
out = y(ii);

Categorías

Más información sobre Graphics Object Programming en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by