If statement doesn't return base case

Hey. I've tried doing some simple code to speed up my calculations. Here it is:
function result = pressure(inp)
if (inp < 25)
result = 1;
else
result = 1.*abs((log(100./inp)/(log(4))));
end
end
It works if I execute single numbers, but when I use it when I'm passing a bunch of numbers it breaks. If I pass a 1:1:100 matrix it doesn't use the base case anymore for any number under 25. Any ideas?

Réponses (2)

KSSV
KSSV le 4 Juin 2020
Modifié(e) : KSSV le 4 Juin 2020
inp = 1:100 ;
result = zeros(size(inp)) ;
result(inp<25) = 1 ;
result(inp>=25) = abs((log(100./inp(inp(>=25)))/(log(4))));
You cannot use that function, if you give input as an vector. If you want for vector, either follow the above procedure or run a loop for each inp.
madhan ravi
madhan ravi le 4 Juin 2020
Modifié(e) : madhan ravi le 4 Juin 2020
result = (inp < 25) + abs((log(100./inp)/log(4))) .* (inp>=25)

Catégories

En savoir plus sur Data Import and Analysis dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by