[<< wikibooks] MATLAB Programming/Arrays/Cell Arrays
= Cell Array Introduction =
Cell Arrays can contain differing information in every element.  These types of arrays are useful when interacting with spreadsheet software.

== Creating Cell Arrays ==
Cell arrays follow the same conventions as regular arrays except instead of square brackets use curly brackets.

 array = [1, 2, 3; 4, 5, 6];
 cell_array = {1, 2, 3; 4, 5, 6};

Cell arrays have fewer limitations than regular arrays.  The regular array can hold strings; however, the string in each element must be the same length. If one element in a regular array is a string then all elements must be a string.  Cell arrays have neither of these limitations.

 cell_array = {1, 2, 'a', 'abc'; rand(3, 2), magic(3), eye(3), 'junk'}
   cell_array = 
     [         1]    [         2]    'a'             'abc' 
     [3x2 double]    [3x3 double]    [3x3 double]    'junk' 

With fewer limitations for the content of a cell array comes complications.  While cell arrays are a powerful tool, these arrays work differently because each element can be almost anything.

== Dynamic Resizing ==
Cell arrays can be dynamically resized, which is a key feature in more advanced data structures. For example, a queue data structure using the commands:


An element can be popped from the front of the queue using the commands:

 cell_array(1)=[]; % remove first element - resize
 cell_array(1)=[]; % remove first element - resize

== Uses ==

=== GUI Tables ===
Cell arrays are used when displaying a table to a figure.


== Converting to and from cell arrays ==

=== Converting From a Numeric Array into a Cell Array ===
Use num2cell to convert from a numeric into a cell array.

 >> cell_array = num2cell(numeric_array);

=== Converting From a Cell Array into a Numeric Array ===
Use cell2mat to convert from a cell into a numeric array.

 >> numeric_array = cell2mat(numeric_cell_array);

= External Links =