Info

This question is closed. Reopen it to edit or answer.

How do I fix: Index exceeds array bounds.

1 view (last 30 days)
jakobjakob
jakobjakob on 10 Jun 2018
Closed: Star Strider on 11 Jun 2018
j= 1:length(index_aanname);
for j= 1:length(index_aanname)
for l=1:length(alldata)
if ((strcmp(alldata(l,3), SA{j})) && ((TA(1,j) - alldata{l,1}) <= 10.0) && ((TA(1,j) - alldata{l,1}) >= 0) && (strcmp(alldata(l,4), 'Voor'))) == 1
eerste_kijkmoment(l) = tijdnum(l);
j=j+1;
end
end
end
j goes up to 240. I know that in the loop it goes to 241, that's why there is an error. But how do I fix this? I know it ask more often over here, but I cannot come to an answer...
  2 Comments
Majid Farzaneh
Majid Farzaneh on 10 Jun 2018
Hi,
Why you are using j=j+1?
What is the size of SA and TA?
Error occurs because of j=j+1. It cause increasing of j exceed SA or TA size.
jakobjakob
jakobjakob on 10 Jun 2018
I added SA.mat and TA.mat. I know the error is there because of j=j+1, but how can I fix it?

Answers (1)

Star Strider
Star Strider on 10 Jun 2018
If you want to increment ‘j’ inside the ‘l’ loop, the easiuest way is to reverse the order of the for calls:
for l = 1:length(alldata)
for j = 1:length(index_aanname)
... CODE ...
end
end
  2 Comments
jakobjakob
jakobjakob on 10 Jun 2018
The error is gone, but it did not fix my problem. I have a file about footbal looking behaviour. I want the first 'viewing behaviour' (=eerste_kijkmoment) in the 10 seconds before every first ball touch (=aanname). Your code with my code gave all the viewing behaviour and not only the first viewing behaviour before the first ball touch. Can you help me?
Star Strider
Star Strider on 10 Jun 2018
I have no idea how to interpret your ‘SA’ and ‘TA’ data, or even what they mean or what you want to do with them.
I cannot help you further.

Community Treasure Hunt

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

Start Hunting!