2 svar
489 visningar
Soderstrom är nöjd med hjälpen
Soderstrom 2767
Postad: 11 dec 2019 18:15

"For Loop"

Hur fungerar en "For Loop"? Jag har läst en del på "doc for" som är en inbyggd funktion i Matlab. Men Jag förstod knappt något.

 

Jag skulle vilja ha ett exempel och förklarande text gärna.

Smutstvätt 23991 – Moderator
Postad: 11 dec 2019 18:32

En for-loop inom programmering är en sorts välsminkad while-loop. En while-loop säger i princip: "När 'det här' stämmer, gör 'den här saken'." Vi kan då definiera en variabel som vi bara använder för att räkna hur många varv vi gått i loopen. Vi kan kalla denna variabel för "count". Vi vill använda den för att addera 5 till något tal x precis tio gånger. Om vi skriver detta som en while-loop blir det:

int count = 0;

int x = 0;

while ( count < 10) {

          x = x + 5;           //Adderar fem till talet x

          count = count + 1;           //Lägger till ett till count, så att vi håller koll på hur många varv vi gått i loopen

}

Det är lite uttömmande. Det är lätt att glömma bort den sista kodraden, och då få en oändlig loop. En for-loop löser detta problemet. Vi skriver då:

int x = 0;

for (int count = 0; count < 10; count++) {

          x = x + 5;

}

"int count = 0" definierar vår count-variabel, "count < 10" kontrollerar hur stor count får bli, och "count++" adderar ett till count för varje varv vi går. 

Tegelhus 225
Postad: 13 dec 2019 01:23

Värt att nämna är att for-loopar ser lite annorlunda ut i Matlab jämfört med andra programmeringsspråk, även om de fungerar i princip likadant. Om man vill loopa igenom någonting 10 gånger kan man köra följande kod:

for i = 1:10

    disp(i);

end

1:10 skapar en vektor med värdena 1, 2, 3, ..., 10. Det som händer är att det som är innanför loopen kommer att köras just tio gånger. Första gången gäller att i=1, andra gången att i=2 osv. Det disp(i); gör är bara att skriva ut värdet på i.

Du kan leka runt lite själv, förhoppningsvis hjälper det dig att förstå vad som händer. Prova också att t.ex. byta ut 1:10 mot 20:25 eller något annat.

Svara Avbryt
Close