index exceed the number of arrays elements

조회 수: 5 (최근 30일)
Julio Ferreira
Julio Ferreira 2022년 8월 10일
댓글: Julio Ferreira 2022년 8월 10일
i have this problem with number of array elements . Index must not exceed 124.
How do i solve this? Thanks
length_collective=length(Collective); %equals to 124
length_single=length(single); %equals to 393
for i=1:1:length(Collective)
aux=[];
for j=1:1:length(single)
if(single(j)>Collective(i) && single(j)<Collective(i+1) )
aux=single(j);
end
if( (single(j)>Collective(length(Collective)-1 )) && i==length(Collective)-1 )
aux=single(j);
end
end
end

채택된 답변

Kevin Holly
Kevin Holly 2022년 8월 10일
Collective = rand(1,124);
single = rand(1,393);
length_collective=length(Collective) %equals to 124
length_collective = 124
length_single=length(single) %equals to 393
length_single = 393
for i=1:1:length(Collective)-1 % I added a minus one here
aux=[];
for j=1:1:length(single)
if(single(j)>Collective(i) && single(j)<Collective(i+1) )% because when i =124, this line tries to read Collective(125), which does not exists (exceeds 124).
aux=single(j);
end
if( (single(j)>Collective(length(Collective)-1 )) && i==length(Collective)-1 )
aux=single(j);
end
end
end

추가 답변 (1개)

dpb
dpb 2022년 8월 10일
length_collective=length(Collective); %equals to 124
length_single=length(single); %equals to 393
for i=1:1:length(Collective)
...
Why compute and save variables of the length and then not use them but call the function again?
NB: As side note, length() is a risky function being as it is defined as max(size()) so that one can get either the number of rows or number columns for a 2D array, depending on its size. It's OK for known 1D vectors; otherwise, use size() with the specific dimension of interest; rarely is the orientation not of importance where length is actually the desired result.
...
aux=[];
for j=1:1:length(single)
if(single(j)>Collective(i) && single(j)<Collective(i+1) )
...
You're running the loop over the total number of elements in the array but then addressing the next element past the one of the loop index -- henc, when you reach the last element, the next one is outside array bounds.
The expedient fix in the loop is to iterate only up to length_single - 1
  댓글 수: 1
Julio Ferreira
Julio Ferreira 2022년 8월 10일
thank you, i don't know how i didn't saw it. and thank you for the advice

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Multidimensional Arrays에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by