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?

Answers (2)

KSSV
KSSV on 4 Jun 2020
Edited: KSSV on 4 Jun 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 on 4 Jun 2020
Edited: madhan ravi on 4 Jun 2020
result = (inp < 25) + abs((log(100./inp)/log(4))) .* (inp>=25)

Categories

Find more on Data Import and Analysis in Help Center and File Exchange

Asked:

on 4 Jun 2020

Edited:

on 4 Jun 2020

Community Treasure Hunt

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

Start Hunting!