Getting rid of a for loop
3 views (last 30 days)
Show older comments
jacob Mitch
on 19 Oct 2019
Commented: jacob Mitch
on 20 Oct 2019
If I have my code as
function [value1, value2] = scope(input)
c=1;
x=length(input);
for z=2:x
if z==x
break
elseif input(z-1)>input(z) && input(z)<input(z+1)
value1(c,1)=z;
value2(c,1)=input(z);
c=c+1;
end
end
Is it possible to get rid of the for look so the function runs without loops. Thank you.
0 Comments
Accepted Answer
Walter Roberson
on 19 Oct 2019
value1 = find(input(1:end-2) > input(2:end-1) & input(2:end-1) < input(3:end)) + 1;
value2 = input(value1);
More Answers (2)
Turlough Hughes
on 19 Oct 2019
Edited: Turlough Hughes
on 19 Oct 2019
The following should do the job.
ind=input(1:end-2)>input(2:end-1) & input(2:end-1)<input(3:end);
ind=[false; ind; false]; % If input is a row vector just remove to semi-colons here.
value1=find(ind);
value2=input(ind);
0 Comments
Steven Lord
on 20 Oct 2019
You're looking for a local minimum in your vector input? [I would choose a different name, BTW, since input already has a meaning.] If so and you're using release R2017b or later use islocalmin.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!