## Loop Variables

The loop variable defines the loop index value for each iteration. You set it in the first line of a `parfor` statement.

`parfor p=1:12`

For values across all iterations, the loop variable must evaluate to ascending consecutive integers. Each iteration is independent of all others, and each has its own loop index value.

 Required (static): Assignments to the loop variable are not allowed.

This restriction is required, because changing `p` in the `parfor` body cannot guarantee the independence of iterations.

This example attempts to modify the value of the loop variable `p` in the body of the loop, and thus is invalid.

```parfor p = 1:n p = p + 1; a(p) = i; end```

 Required (static): You cannot index or subscript the loop variable in any way.

This restriction is required, because referencing a field of a loop variable cannot guarantee the independence of iterations.

The following code attempts to reference a field (`b`) of the loop variable (`p`) as if it were a structure. Both lines within the loop are invalid.

```parfor p = 1:n p.b = 3 x(p) = fun(p.b) end```

Similarly, the following code is invalid because it attempts to index the loop variable as a 1-by-1 matrix:

```parfor p = 1:n x = p(1) end```

 Required (static): You cannot use a range increment in `for`-loops nested inside a `parfor`-loop.

Consider the following example:

```N = 10; T = 3; A = zeros(N,T); B = zeros(N,T); ```

The following code is invalid.

```parfor i = 1:1:N for t = 1:1:T A(i,t) = t; end end ```

The following code is valid.

```parfor i = 1:1:N for t = 1:T B(i,t) = t; end end ```