Anda di halaman 1dari 30

Chapter 4

MATLAB provides two types of loops

• A counted loop
• “for”
• Used when you know ahead of time how many times some
action will be repeated
• Repeat n-times

• A conditional loop
• “while”
• Used when you do not know ahead of time how many times
some action will be repeated
• Repeat until some logical statement becomes false
• Used with a pre-defined number of iterations of the loop variable
The “for” keyword (“for” is a reserved word in MATLAB)
The loop variable, which can be any valid variable name
Traditionally, we use i, j, k, or other single letters
The range or list of values the loopVar will take on
Can be any vector, but typically the colon operator is used
The action(s) that will be performed during each iteration
The “end” keyword. Signifies that the code should go back to
beginning of the loop statement if more iterations remain

for loopVar = range

• Lets make a simple
for loop to see how
everything works
• During each
• Loop variable i is
• i is printed using

• Note that the

actions must be
• Makes code easier
to read
• MATLAB editor does
this automatically
• The loop variable
can change by any
• Most commonly
the increment is 1
• The loop variable
can have positive or
negative values
• Most commonly
values are positive

• After loop is
• Can still use the
loop variable
• Has the final value
of the loop
• The loop iterations can be
defined by any vector
• This is not typical
• Whenever possible, use the
colon operator
A common use
of a loop:
• perform an
operation on each
and every data
point, one by one.
• Doesn’t matter how
many data points
there are*
*Obviously, there is some limit based on your computer’s RAM, CPU speed, and operating system
• Lets mimic the
behavior of the
MATLAB function
• Use a for loop
Because MATLAB code is interpreted on the fly
(i.e. not compiled into binary exe files)
• Each time the loop restarts, the whole loop must be
compiled again
• To avoid using loops (vectorization)
• For most operations, loops are still fast enough
• To calculate execution times of scripts, MATLAB provides
a timer function
• “tic” starts the timer
• “toc” stops the timer and prints the total execution time to the
command window
• Makes most sense to use in scripts/functions
• Using tic toc, we can determine if code is efficient
Each time the
loop iterates...
• velKmHr is
completely re-
allocated and
remade each
• This is why the
editor gives a
• orange wiggly
Each time the
loop iterates...
• One entry in
velKmHr is
• The whole
matrix doesn’t
need to be
• Numerical results are
• Second script pre-
allocates the velKmHr
• Runs > 5x faster!!!
• A loop to find the maximum of a vector
• We can combine loops with Boolean logic to test if each
entry meets some criterion
• We can combine loops with Boolean logic tests
• We can nest “for” loops into inner and outer
• Can also be done with “while” loops
• Often useful for dealing with 2D data

The outer loop. “loopVar1” is iterated over “range1”

The inner loop. “loopVar2” is iterated over “range2”

for loopVar1 = range1

for loopVar2 = range2
• Lets try a simple nested for loop.
• Lets try another simple nested for loop.
• This is NOT the way to do it!

• Lets try a nested for loop

• To make a 2D grid we need a nested for loop
• Outer loop: x-range; Inner loop: y-range

• Could even make

spherical grids
• (r, θ, ϕ)
• The “for” loop is a counted loop
• You must know the number of iterations beforehand

• What if you don’t know how many iterations there will

• Use a conditional loop: the “while” loop
• Loop continues until some condition is no longer met
• Often paired with counter variables (to keep track of iterations)
• Can be used to error check, or only read part of a dataset.

• Most for loops can also be written as while loops

• Do whichever one is easiest to understand
• Typically for loops require less code
• Used with a conditional test of the loop variable
The “while” keyword (“while” is a reserved word in MATLAB)

A conditional statement to be tested at the beginning of each

loop iteration. If true, loop continues, if false, loop ends

The action(s) performed only if the condition(s) is “true”

The “end” keyword. At this point, the computer goes back to

the beginning of the while loop and re-tests the condition(s).

while condition
Tests if x < 8
• If true:
• Prints out x to command
• If false:
• Loop terminates
• Can test more than
one condition in a
while loop
• Tests if x < 8 or y < 33
• Make sure the
condition tested will
become false
• If condition tested is
never false:
• An infinite loop
• Kill by typing ctrl+c
• May take several

• What should be
• If you use a while
loop to read though
a matrix/vector
• The whole
matrix/vector may
not be read
• Sometimes this is

• To test which data meets some

condition for all data
• Use a for loop + if statement(s)

• Why does a while loop work here?

If we require input
from the user
• The user may input
• A while loop can
check this
• Loops allow us to solve a problem once
• Tell the computer to repeat n-times
• While modern computers are VERY fast…
• MATLAB is not efficient with loops* *(not true for most other languages)
• The whole loop is recompiled with each iteration
• Adding entries to end of a matrix is inefficient* *(overwriting is fast)
• You should pre-allocate matrices/vectors whenever possible
• Multiple loops can be nested
• Can nest a for and while loop
• Can nest if-elseif-else statements in a loop(s)
• When nesting anything, always consistently indent

• If loops are not fast in MATLAB, what can I do?

• Vectorize your code!!