Getting rid of a for loop
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
jacob Mitch
am 19 Okt. 2019
Kommentiert: jacob Mitch
am 20 Okt. 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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 19 Okt. 2019
value1 = find(input(1:end-2) > input(2:end-1) & input(2:end-1) < input(3:end)) + 1;
value2 = input(value1);
Weitere Antworten (2)
Turlough Hughes
am 19 Okt. 2019
Bearbeitet: Turlough Hughes
am 19 Okt. 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 Kommentare
Steven Lord
am 20 Okt. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!