Index exceeds matrix dimensions.

*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*

 Accepted Answer

Birdman
Birdman on 14 Mar 2018
Edited: Birdman on 14 Mar 2018
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 Comments

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 on 14 Mar 2018
Edited: Birdman on 14 Mar 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.
Birdman allways saves
Haha, you are welcome :)

Sign in to comment.

More Answers (0)

Asked:

on 14 Mar 2018

Commented:

on 14 Mar 2018

Community Treasure Hunt

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

Start Hunting!