If statement doesn't return base case
Show older comments
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)
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
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
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!