## ASSIGN Making assignments

### Usage

FreeMat assignments take a number of different forms, depending on the type of the variable you want to make an assignment to. For numerical arrays and strings, the form of an assignment is either
```  a(ndx) = val
```

where `ndx` is a set of vector indexing coordinates. This means that the values `ndx` takes reference the elements of `a` in column order. So, if, for example `a` is an `N x M` matrix, the first column has vector indices `1,2,...,N`, and the second column has indices `N+1,N+2,...,2N`, and so on. Alternately, you can use multi-dimensional indexing to make an assignment:

```  a(ndx_1,ndx_2,..,ndx_m) = val
```

where each indexing expression `ndx_i` corresponds to the `i-th` dimension of `a`. In both cases, (vector or multi-dimensional indexing), the right hand side `val` must either be a scalar, an empty matrix, or of the same size as the indices. If `val` is an empty matrix, the assignment acts like a delete. Note that the type of `a` may be modified by the assignment. So, for example, assigning a `double` value to an element of a `float` array `a` will cause the array `a` to become `double`. For cell arrays, the above forms of assignment will still work, but only if `val` is also a cell array. If you want to assign the contents of a cell in a cell array, you must use one of the two following forms, either

```  a{ndx} = val
```

or

```  a{ndx_1,ndx_2,...,ndx_m} = val
```

which will modify the contents of the cell.