If statement doesn't return base case

1 view (last 30 days)
Szymon Komenda
Szymon Komenda on 4 Jun 2020
Edited: madhan ravi on 4 Jun 2020
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 Graphics Object Programming in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!