In this article, you’ll see practical examples of MATLAB for loops so that you can become more familiar with the way they work in MATLAB. Specifically, you’ll learn:

- The MATLAB for loop syntax
- The Nested for loop syntax
- How to vectorize nested loops

## MATLAB For Loop Syntax

### Creating a Simple For Loop in MATLAB

There are several ways of writing a for loop in MATLAB. Here’s the most common example you’ll use to write a for loop:

for i = 1:n % n is the number of loops you want instructions; % what you want to do n times end

- Example of a loop that counts to 10:
for i = 1:10 i end

- Example of a loop that creates a
**cell array**of numbers:cellArrayOfNumbers = []; for i = 1:10 cellArrayOfNumbers = [cellArrayOfNumbers {i}]; % cell of the number of iterations end

This for loop creates a cell array of 1 line and 10 rows with all iterations of the loop:

- Example of a loop that creates a cell array of strings:
cellArrayOfStrings = []; for i = 1:10 cellArrayOfStrings = [cellArrayOfStrings {'string'}]; % cell of the word 'string' end

This for loop creates a cell array of 1 line and 10 rows with the word “string” in every cell:

- Example of a for loop that counts to 10 in 0.1 increments:
for i = 1:0.1:10 % "0.1" is the increment step i end

Since the increment step can be whatever you want, you can also use it to create

**backward loops**(as we will see in the next section).

### MATLAB For Loop Backwards

In this case, a few things differ from a classic “forward” MATLAB for loop:

- The iteration step is negative.
- The number at the left of the first colon is greater than the number at the right of the last colon.

Here’s an example of a for loop that counts backward from 10 to 1:

for i = 10:-1:1 % "-1" is the decrement step i end

### Exit a For Loop with a Break

**Exit a for loop:**if you want to prematurely escape a for loop, you can do that by using the**break**MATLAB function. This is often used when a specific condition is met.

For example:for i = 1:100 if i>50 break end end

**Why use a break:**If you run the code above, you’ll get the value 51 for the variable “i” since the for loop stops or “breaks” as soon as i is strictly above 50.

Keep in mind that this is a simple example, and using the**break**MATLAB command here is really not recommended because you could just write this instead:for i = 1:51 end

Using

**break**comes in handy when you have nested for loops (i.e. a for loop within a for loop) because you can exit a loop based on a condition that is common to both loops.

## Nested For Loop In MATLAB

### Nested For Loop Example

As we saw before, a nested for loop is a loop within a loop. In MATLAB, you can define as many nested for loops as you want by using the following (for only 2 levels of nested for loops):

for i = 1:n for j = 1:m instructions end end

Here’s a simple an example:

k = 0; for i = 1:10 for j = 1:10 k = k+i+j; end end

In mathematical terms, we are calculating the sum: \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}(i+j)\)

Which can be calculated as the following:

\(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}(i+j) = \sum\limits_{i=1}^{n}(\sum\limits_{j=1}^{n}i+\sum\limits_{j=1}^{n}j)=\sum\limits_{i=1}^{n}(i\times n +\frac{n(n+1)}{2})\\\\\sum\limits_{i=1}^{n}(i\times n +\frac{n(n+1)}{2})=n\sum\limits_{i=1}^{n}i+\sum\limits_{i=1}^{n}\frac{n(n+1)}{2}=\frac{n^2(n+1)}{2}+\frac{n^2(n+1)}{2} = n^2(n+1)\)

If you take n=10,

\(n^2(n+1) = 10^2\times11=1100\)

Which is what you get in MATLAB:

### Exit a Nested for loop

**Syntax:**unfortunately, there is no elegant way (that I know of) to exit every nested loop and execute the rest of the code. You basically need to repeat the condition every time you want to exit a for loop:for i = 1:n for j = 1:m instructions if breakCondition break end end if breakCondition break end end

**Example:**if we take the previous item, we would get:k = 0; for i = 1:10 for j = 1:10 k = k+i+j; breakCondition = k>500; if breakCondition break end end if breakCondition break end end

Which gives us the following in MATLAB:

Remember, k doesn’t iterate in single increments, so it makes sense that next iteration of k isn’t 501.

## Vectorize Nested Loops

### What Does it Mean?

This involves transforming a nested loop in a multiplication of vectors or matrices to optimize the run time. It is also more elegant to use arrays instead of for loops when it’s not necessary.

### How to Vectorize a For Loop: Basic Example

Let’s say we want to compute the sum \(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}(i\times j)\). We can use a nested for loop to do the following:

for i = 1:10 for j = 1:10 k = k+i*j; end end

If you run this script in MATLAB, you get:

Instead of using this nested for loop, you can use the following arrays:

A = 1:10; B = [A ; A ; A ; A ; A ; A ; A ; A ; A ; A]; C = ones(10, 1);

The multiplication of these arrays (A*B*C) is equivalent to the nested for loop but is more elegant and faster to compute.

### Example: Vectorize a For Loop For a Sum of Squared Elements

You can also vectorize the sum from i to n of i^2 by using element-wise operations on a vector:

i = 1:100; S = sum(i.^2);

This example is detailed in the following article: MATLAB Vector Tutorial: Create, Add, Concatenate, and Extract

**Key takeaways: **

- Use this syntax to define a for loop in MATLAB:
for i = 1:n % n is the number of loops you want instructions; % what you want to do n times end

- Use this syntax to define nested for loops in MATLAB:
for i = 1:n for j = 1:m instructions end end

- Vectorizing Nested for loops:
- You can vectorize a nested for loop to optimize your code
- Here’s an example:
for i = 1:10 for j = 1:10 k = k+i*j; end end

If you vectorize this nested for loop, you get:

A = 1:10; B = [A ; A ; A ; A ; A ; A ; A ; A ; A ; A]; C = ones(10, 1); k = A*B*C;

If you want to learn more about the tools that helped me **stop wasting time doing mindless work** (such as generating Excel reports, Word documents, or creating clean and simple user interfaces) I wrote a small reference book about it: