%% 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}

% 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)

%
% 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'}

%
% 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)

%

numericVector = cell2mat(numericCells)

% 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 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

%
% 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}

%
% 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,:}]

% Copyright 2012 The MathWorks, Inc.