*Y=2;
g=[20,10];
w=40 : -2 : 3;
for x=1:length(w)
if w(x)<=5 "why get I problem here, its says 'Index exceeds matrix dimensions'"
break
else
w=setdiff(w(w>(5)),g);
A= x*3;
w1=A.*Y;
end
end*

 Akzeptierte Antwort

Birdman
Birdman am 14 Mär. 2018
Bearbeitet: Birdman am 14 Mär. 2018

0 Stimmen

Because at the following line
w=setdiff(w(w>(5)),g)
your w vector becomes a 16 element array when x=1 and when x=17, you try to reach 17th element of your w array, which is not possible.
If you put a counter to your loop named cnt as follows, you will see the reason actually:
Y=2;
g=[20,10];
w=40 : -2 : 3;
cnt=0;
for x=1:length(w)
cnt=cnt+1;
if w(x)<=5 "why get I problem here, its says 'Index exceeds matrix dimensions'"
break
else
w=setdiff(w(w>(5)),g);
A= x*3;
w1=A.*Y;
end
end
When the loop is broken, the value of cnt is 17.

4 Kommentare

Y=2;
g=[20,10];
w=40 : -2 : 3;
for x=1:length(w)
if w(x)<=5
break
else
w=setdiff(w(w>(5)),g); > I JUST WANNA w to SKIP THE VALUES OF g. HELP!
A= x*3;
w1=A.*Y;
end
end
Birdman
Birdman am 14 Mär. 2018
Bearbeitet: Birdman am 14 Mär. 2018
Ok, you don't need to do it in the loop, because you overwrite w at the very first step and actually that line is just a waste of time until loop is broken. You get rid of g values at the first step. You may do it outside the loop.
silvano carvalho
silvano carvalho am 14 Mär. 2018
Birdman allways saves
Birdman
Birdman am 14 Mär. 2018
Haha, you are welcome :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Gefragt:

am 14 Mär. 2018

Kommentiert:

am 14 Mär. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by