# Access Data in Cell Array

This example shows how to read and write data to and from a cell array.

Create a 2-by-3 cell array of text and numeric data.

```C = {'one', 'two', 'three'; 1, 2, 3}```
```C=2×3 cell array {'one'} {'two'} {'three'} {[ 1]} {[ 2]} {[ 3]} ```

There are two ways to refer to the elements of a cell array. Enclose indices in smooth parentheses, `()`, to refer to sets of cells--for example, to define a subset of the array. Enclose indices in curly braces, `{}`, to refer to the text, numbers, or other data within individual cells.

### Cell Indexing with Smooth Parentheses, ()

Cell array indices in smooth parentheses refer to sets of cells. For example, to create a 2-by-2 cell array that is a subset of `C`, use smooth parentheses.

`upperLeft = C(1:2,1:2)`
```upperLeft=2×2 cell array {'one'} {'two'} {[ 1]} {[ 2]} ```

Update sets of cells by replacing them with the same number of cells. For example, replace cells in the first row of `C` with an equivalent-sized (1-by-3) cell array.

`C(1,1:3) = {'first','second','third'}`
```C=2×3 cell array {'first'} {'second'} {'third'} {[ 1]} {[ 2]} {[ 3]} ```

If cells in your array contain numeric data, you can convert the cells to a numeric array using the `cell2mat` function.

`numericCells = C(2,1:3)`
```numericCells=1×3 cell array {} {} {} ```
`numericVector = cell2mat(numericCells)`
```numericVector = 1×3 1 2 3 ```

`numericCells` is a 1-by-3 cell array, but `numericVector` is a 1-by-3 array of type `double`.

### Content Indexing with Curly Braces, {}

Access the contents of cells--the numbers, text, or other data within the cells--by indexing with curly braces. For example, to access the contents of the last cell of `C`, use curly braces.

`last = C{2,3}`
```last = 3 ```

`last` is a numeric variable of type `double`, because the cell contains a `double` value.

Similarly, you can index with curly braces to replace the contents of a cell.

`C{2,3} = 300`
```C=2×3 cell array {'first'} {'second'} {'third'} {[ 1]} {[ 2]} {[ 300]} ```

You can access the contents of multiple cells by indexing with curly braces. MATLAB® returns the contents of the cells as a comma-separated list. Because each cell can contain a different type of data, you cannot assign this list to a single variable. However, you can assign the list to the same number of variables as cells. MATLAB® assigns to the variables in column order.

Assign contents of four cells of `C` to four variables.

`[r1c1, r2c1, r1c2, r2c2] = C{1:2,1:2}`
```r1c1 = 'first' ```
```r2c1 = 1 ```
```r1c2 = 'second' ```
```r2c2 = 2 ```

If each cell contains the same type of data, you can create a single variable by applying the array concatenation operator, `[]`, to the comma-separated list.

Concatenate the contents of the second row into a numeric array.

`nums = [C{2,:}]`
```nums = 1×3 1 2 300 ```