Q: How to use cell arrays ({})?

Basically, cell arrays are arrays of arrays ;-)
Here's an example:

```» z={rand(2),rand(3);rand(4),rand(5)}
z =
[2x2 double]    [3x3 double]
[4x4 double]    [5x5 double]
» z{1,1}
ans =
0.6813    0.8318
0.3795    0.5028
```
Arrays may be of different sizes and types. Especially useful are cell arrays to store text data:
```» txt={'This is first string';'This is second'}
txt =
'This is first string'
'This is second'
```
Note that in order to store the same two strings in a normal array, you'd have to pad them to the same length!

Another very useful feature is that z{:} is always equivalent to comma separated list: "z{1},z{2},...". So you can use the cell array to pass parameters to a function...

```» attrib={'p-','color',[.5 .1 .7],'linewidth',3};
» plot(x,y,attrib{:})
» legend(txt{:}); % in fact, you can omit {:} here
```
... or from a function:
```» grid={[],[]}; contours={[],[]};
» [grid{:}]=meshgrid(0:10,0:10);
» grid{3}=grid{1}.*grid{2};
» [contours{:}]=contour(grid{:});
» clabel(contours{:})
```
Besides, you can easily convert a cell array to a normal one:
```» z={[1,2],[3,4,5]}
z =
[1x2 double]    [1x3 double]
» [z{:}] % again, equivalent to [z{1},z{2}] !
ans =
1     2     3     4     5
```
As you can see, it can be a very powerfull tool! Explore it.