Turning a while loop into 1 line

12 Ansichten (letzte 30 Tage)
Bradley Farman
Bradley Farman am 4 Jun. 2017
Beantwortet: ES am 5 Jun. 2017
Hi, for an assignment, I have to turn this while loop into one line
v=[4 11 22 5 33 -8 3 99 52];
newv_sol=[];
j=1;
i=1;
while j<=length(v)
if v(j)<30
newv_sol(i)=v(j);
i=i+1;
end
j=j+1;
end
newv_sol
So far, I've only managed to make it in two lines with the find function and logical indexing.
x=find(v<30)
newv_sol=v(x)
Is there a way to combine these two?
  2 Kommentare
Bradley Farman
Bradley Farman am 4 Jun. 2017
Never mind, I seem to have figured it out.
newv_sol=v(find(v<30))
Stephen23
Stephen23 am 4 Jun. 2017
Bearbeitet: Stephen23 am 4 Jun. 2017
find is not required: logical indexing is more efficient:
newv_sol=v(v<30)

Melden Sie sich an, um zu kommentieren.

Antworten (1)

ES
ES am 5 Jun. 2017
newv_sol=v(v<30)

Kategorien

Mehr zu Matrix Indexing 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!

Translated by