index exceed the number of arrays elements
Mostra commenti meno recenti
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
Risposta accettata
Più risposte (1)
dpb
il 10 Ago 2022
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 Commento
Julio Ferreira
il 10 Ago 2022
Categorie
Scopri di più su Matrix Indexing in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!