global variable in for loop

Hi,
I have a for loop, which has last iterative defined as the size of some matrix K, i.e.
[a,b]=size(K)
for i=1:a
CODE
end
Trouble is, the "CODE" in the for loop redefines how large K is - in particular, it decreases a. This means that the for loop experiences an "Index exceeds matrix dimensions." error. How does one go about fixing this? I thought that in the for loop I could have:
a=a-1;
everytime the "CODE" decreases the size of K, but it don't work none!
Thanks,
Linford

 Risposta accettata

Walter Roberson
Walter Roberson il 18 Gen 2012

0 voti

If you are deleting the entry you are examining under some circumstances, then the easiest change is often to run the loop backwards .

Più risposte (1)

Jan
Jan il 18 Gen 2012
The argument of the FOR loop is calculated once and is not influenced by the contents of the loop - in opposite to C.
You can check the exceeding index explicitely:
[a,b] = size(K);
for i = 1:a
if i > size(K, 1)
break;
end
CODE
end
Using a WHILE loop is a nice alternative:
[a,b] = size(K);
while i <= size(K, 1)
CODE
i = i + 1;
end

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Prodotti

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by