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?

답변 (2개)

KSSV
KSSV 2020년 6월 4일
편집: KSSV 2020년 6월 4일

0 개 추천

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 2020년 6월 4일
편집: madhan ravi 2020년 6월 4일

0 개 추천

result = (inp < 25) + abs((log(100./inp)/log(4))) .* (inp>=25)

카테고리

도움말 센터File Exchange에서 Data Import and Analysis에 대해 자세히 알아보기

질문:

2020년 6월 4일

편집:

2020년 6월 4일

Community Treasure Hunt

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

Start Hunting!

Translated by